Domanda

Nella mia app, ho 2 layout lineari: uno in alto, uno in basso.

Mi piacerebbe che qualunque sia all'interno di questi layout , il layout della parte superiore occupa il 60% dell'altezza dello schermo e il layout del 40% in basso. Ecco il mio codice 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>
.

Quando questi layout sono vuoti, nessun problema, hanno la buona proporzione.

Il problema è che se metto un piccolo elenco nel layout superiore per ad esempioQuindi il layout prenderà la dimensione del ListView e non presterà la proporzione del 60/40%.

Mi piacerebbe che anche se il mio elenco è piccolo (solo 3 elementi per ad esempio), il layout preserve è il 60% e quindi metti un po 'di spazio vuoto sotto la mia lista di lista.

Ho provato a cambiare android:layout_height a match_parent ma non cambia nulla.

È stato utile?

Soluzione

prova a usare questo layout funziona per me

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

Il trucco è quello di impostare un layout_height="0dip" invece di wrap_content in modalità verticale e layout_with="0dip" invece di wrap_content in modalità orizzontale è possibile utilizzare la cartella Layout-Land per questo.

Altri suggerimenti

Layout_weight Specificare spazio extra nel layoutFot la vista.Dovresti provare a misurare prima il tuo schermo come:

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

E poi fare un po 'di calcolo come la larghezza * 0.6 e 0.4, in questo modo il tuo layout avrà sempre 60 40 rapporto.

Spero che questo aiuti

prova layout_height = 0dp in entrambi i bambini LinearLayouts.Sta accadendo perché hai generatodicetagcode che probabilmente sta prevalere l'effetto wrap_content.

Semplicemente nel layout genitore, sostituire android:layout_weight="1.0" con android:weightSum="1.0"

funziona impostando la somma del peso del layout genitore e dei pesi dei layout dei bambini.Il peso dei bambini dovrebbe essere uguale alla somma del peso del genitore.Dai un'occhiata a questo http://blog.stylingandroid.com/archives/312

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top