web-dev-qa-db-fra.com

Android Hauteur de la disposition en pourcentage

Je sais qu'il est impossible de définir des pourcentages et que vous pouvez définir un poids de certaines images pour réduire leur taille. Ce que j'essaie de faire, c’est de spécifier la hauteur d’une disposition par rapport à celle dans laquelle elle se trouve. Fondamentalement j'ai quelque chose comme ça

<LinearLayout Android:layout_height="fill_parent">
  <LinearLayout>

  </LinearLayout>
</LinearLayout>

Bien sûr, ceci est une version très simplifiée, afin que vous puissiez comprendre mon charabia. Fondamentalement, je souhaite que la couche linéaire interne représente environ 50% de la couche linéaire principale.

Quelle est la meilleure façon de procéder?

49
Somk

Vous pouvez ajouter une autre mise en page vide en dessous de celle-ci et les définir pour avoir le même poids. Ils devraient obtenir 50% de l'espace chacun.

16
fleetway76

Il existe un attribut appelé Android: weightSum.

Vous pouvez définir Android: weightSum = "2" dans le parent linear_layout et Android: weight = "1" dans le linear_layout intérieur.

N'oubliez pas de définir le paramètre linear_layout interne sur fill_parent afin que l'attribut weight puisse fonctionner comme prévu.

Au fait, je ne pense pas qu'il soit nécessaire d'ajouter une seconde vue, même si je n'ai pas essayé. :)

<LinearLayout
    Android:layout_height="fill_parent"
    Android:layout_width="fill_parent"
    Android:weightSum="2">

    <LinearLayout
        Android:layout_height="fill_parent"
        Android:layout_width="fill_parent"
        Android:layout_weight="1">
    </LinearLayout>

</LinearLayout>
105
Axel M. Garcia

Android: layout_weight = ". YOURVALUE" est le meilleur moyen d'implémenter en pourcentage

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" >

    <TextView
        Android:id="@+id/logTextBox"
        Android:layout_width="fill_parent"
        Android:layout_height="0dp"
        Android:layout_weight=".20"
        Android:maxLines="500"
        Android:scrollbars="vertical"
        Android:singleLine="false"
        Android:text="@string/logText" >
    </TextView>

</LinearLayout>
10
Swapnil Kotwal

Tout comme vous l'avez dit, je recommanderais des poids. Les pourcentages seraient incroyablement utiles (je ne sais pas pourquoi ils ne sont pas pris en charge), mais vous pouvez le faire de la manière suivante:

<LinearLayout
    Android:layout_height="fill_parent"
    Android:layout_width="fill_parent"
    >
    <LinearLayout
        Android:layout_height="0dp"
        Android:layout_width="fill_parent"
        Android:layout_weight="1"
        >
    </LinearLayout>
    <View
        Android:layout_height="0dp"
        Android:layout_width="fill_parent"
        Android:layout_weight="1"
    />
</LinearLayout>

À retenir, vous avez une vue vide qui occupera l'espace restant. Pas idéal, mais il fait ce que vous recherchez.

8
kcoppock

Avec l'introduction de ContraintLayout, il est possible de mettre en œuvre avec des directives:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context="com.example.eugene.test1.MainActivity">

    <TextView
        Android:id="@+id/textView"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        Android:background="#AAA"
        Android:text="TextView"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/guideline" />

    <Android.support.constraint.Guideline
        Android:id="@+id/guideline"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.5" />

</Android.support.constraint.ConstraintLayout>

Result View

Vous pouvez en lire plus dans cet article Construction d'interfaces avec ConstraintLayout .

4
Eugene Brusov