Question

Dans mon application, j'ai 2 dispositions linéaires :un en haut, un en bas.

J'aimerais ça tout ce qu'il y a à l'intérieur de cette mise en page, la disposition du haut occupe 60% de la hauteur de l'écran et la disposition du bas 40%.Voici mon code XML :

   <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:orientation="vertical" 
         android:id="@+id/layout_top">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="0.4" 
        android:id="@+id/layout_bottom">
    </LinearLayout>

</LinearLayout>

Lorsque ces agencements sont vides, pas de problème, ils ont la bonne proportion.

Le problème est que si je mets une petite liste dans la présentation supérieure, par exemple.alors la mise en page prendra la taille de la liste et ne conservera pas la proportion de 60/40 %.

J'aimerais que même si ma liste est petite (seulement 3 éléments par exemple), la mise en page la préserve à 60% et met donc un peu d'espace vide sous ma liste.

J'ai essayé de changer android:layout_height à match_parent mais ça ne change rien.

Était-ce utile?

La solution

Essayez d'utiliser cette mise en page, cela fonctionne pour moi

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:orientation="vertical" 
         android:id="@+id/layout_top"
         android:background="#FF0000">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:orientation="vertical"
        android:layout_weight="4" 
        android:id="@+id/layout_bottom"
        android:background="#FF00FF">
    </LinearLayout>

</LinearLayout>

L'astuce consiste à mettre en place un layout_height="0dip" au lieu de wrap_content en mode portrait et layout_with="0dip" au lieu de wrap_content en mode Paysage, vous pouvez utiliser le dossier layout-land pour cela.

Autres conseils

layout_weight spécifie un espace supplémentaire dans la mise en page pour la vue.vous devriez d'abord essayer de mesurer votre écran comme :

Display display = ((WindowManager) 
  getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int width = display.getHeight();

puis en effectuant des calculs comme width*0.6 et 0.4 , de cette façon, votre mise en page aura toujours un rapport de 60 40.

J'espère que cela t'aides

essayer layout_height = 0dp chez les deux enfants LinearLayouts.Cela arrive parce que vous avez wrap_content ce qui annule probablement le layout_weight effet.

Simplement dans votre mise en page parent, remplacez android:layout_weight="1.0" avec android:weightSum="1.0"

Cela fonctionne en définissant la somme des poids de la mise en page parent et les poids des mises en page enfants.Le poids des enfants doit être égal à la somme des poids des parents.Regarde ça http://blog.stylingandroid.com/archives/312

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top