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?
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.
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>
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>
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.
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>
Vous pouvez en lire plus dans cet article Construction d'interfaces avec ConstraintLayout .