39 votes

Dans les layouts Android, quel est l'effet/la signification de layout_height="0dip" ?

J'ai vu plusieurs exemples qui utilisent Android:layout_height="0px" ou "0dip" mais je ne comprends pas l'impact de cela. Il semble que cela rendrait la présentation haute de 0 pixel. La valeur est elle atténuée par un autre facteur comme le "poids" ou la hauteur des vues parentales ?

36voto

schwiz Points 13679

Oui, vous avez raison pour le poids, lorsque vous voulez que la largeur ou la hauteur soit contrôlée par le poids, il est conventionnel de fixer cette valeur à 0dip et de laisser le poids contrôler la valeur réelle. Bien que je sois presque sûr que 0 est juste arbitraire ici, vous pourriez mettre n'importe quoi, mais mettre 0 rend votre intention plus claire.

11voto

Femi Points 42054

Lors de l'utilisation d'un LinearLayout, si vous définissez le paramètre layout_weight à une valeur non nulle et définir le layout_height (ou layout_width ) à 0px ou 0dip, le LinearLayout distribue l'espace non attribué le long de l'axe approprié en fonction des poids. Par exemple, si vous regardez le layout sous la vue avec l'id *gestures_overlay*, il a layout_height 0dip et layout_weight 1, de sorte que le LinearLayout parent l'étire pour remplir l'espace vertical disponible entre les 2 LinearLayouts environnants. S'il y avait une autre vue avec le même 0dip layout_height et un layout_weight ils se partageront l'espace vertical en fonction de leurs valeurs de poids.

<?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">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="6dip"

            android:text="@string/prompt_gesture_name"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/gesture_name"
            android:layout_width="0dip"
            android:layout_weight="1.0"
            android:layout_height="wrap_content"

            android:maxLength="40"
            android:singleLine="true" />

    </LinearLayout>

    <android.gesture.GestureOverlayView
        android:id="@+id/gestures_overlay"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1.0"

        android:gestureStrokeType="multiple" />

    <LinearLayout
        style="@android:style/ButtonBar"

        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

        android:orientation="horizontal">

        <Button
            android:id="@+id/done"

            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"

            android:enabled="false"

            android:onClick="addGesture"
            android:text="@string/button_done" />

        <Button
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"

            android:onClick="cancelGesture"
            android:text="@string/button_discard" />

    </LinearLayout>

</LinearLayout>

3voto

LVB Points 392

Un exemple pertinent tiré de la documentation officielle destinée aux développeurs ( http://developer.Android.com/guide/topics/ui/layout/linear.html ) :

Enfants à poids égal

Pour créer une présentation linéaire dans laquelle chaque enfant utilise la même quantité d'espace sur l'écran, définissez la valeur " Android:layout_height " de chaque vue. 0dp "(pour une présentation verticale) ou la largeur Android:layout_width de chaque vue à " 0dp "(pour une présentation horizontale). Définissez ensuite le poids Android:layout_weight de chaque vue à "1".

0voto

Avnish kumar Points 119

Lorsque nous devons attribuer poids égal à la vue différente dans LINEAR LAYOUT puis nous attribuons soit layout/width = 0dp (pour l'orientation horizontale), soit layout/height = 0dp (pour l'orientation verticale) et nous définissons View /weight ==1 pour chaque vue à l'intérieur de cette disposition linéaire.

Avantage::: : -- L'attribution de la largeur ou de la hauteur à 0dp n'a pas d'impact et en raison du poids==1, toutes les vues occupent le même espace et couvrent la totalité de la taille de l'écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X