J'ai une mise en page comme ci-dessous. Maintenant, je ne veux pas définir la largeur de la mise en page relative à 240 dp fixe. Je veux définir la largeur de la mise en page relative à 1/3 de la largeur de l'écran. Est-il possible de faire cela dans le fichier XML? Si c'est impossible, comment puis-je y parvenir en utilisant du code Java?
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:id="@+id/fullscreen"
style="@style/translucent">
<RelativeLayout
Android:layout_width="240dp"
Android:layout_height="fill_parent"
Android:layout_gravity="right"
Android:gravity="center"
Android:background="#88000000"
Android:id="@+id/sidebar">
</RelativeLayout>
</FrameLayout>
utilisez weightsum="3"
dans le parent et layout_weight=1
dans l'enfant. Jetez un oeil à cette référence
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:id="@+id/fullscreen"
style="@style/translucent"
Android:orientation="horizontal"
Android:weightSum="3">
<RelativeLayout
Android:layout_width="0dp"
Android:layout_height="fill_parent"
Android:layout_gravity="right"
Android:gravity="center"
Android:background="#88000000"
Android:id="@+id/sidebar"
Android:layout_weight="1"
>
</RelativeLayout>
<!-- other views, with a total layout_weight of 2 -->
</LinearLayout>
Vous devez utiliser une LinearLayout
pour que la largeur d'une vue soit égale à un tiers de sa vue parent.
Quelque chose comme:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<RelativeLayout
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:gravity="center"
Android:background="#88000000">
</RelativeLayout>
<ViewGroup
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="2">
</ViewGroup>
</LinearLayout>
Le bit clé est le rapport entre layout_weights. La documentation est plutôt bonne.
Une LinearLayout
avec un Android:layout_orientation="horizontal"
est ce que vous voulez, avec des poids.
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="horizontal">
<RelativeLayout
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="1"
...all your stuff... />
<View
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="2" />
</LinearLayout>