2010-09-02 20 views
19

Sto provando a dividere una pagina in tre parti. Mi piacerebbe farlo in valori percentuali, tuttavia ciò non è supportato da Android. Invece devo usare android:layout_weight. Ma ho difficoltà a capirlo e farlo bene. Soprattutto come viene calcolata la dimensione effettiva. C'è un modo per ottenere un valore percentuale (0,100%) su android:layout_weight?Android: cercando di capire android: layout_weight

Ho esaminato alcuni casi (vedere lo screenshot allegato) per descrivere i problemi. I campi colorati sono tutti <LinearLayout> con android:layout_height="fill_parent", perché voglio dividere lo schermo intero tra quelli.

Caso 1

alt text

Va bene, semplice. Ogni <LinearLayout> ottiene il 33%.

Caso 2

alt text

Ups ?! Il primo (giallo) <LinearLayout> scompare completamente? Perché?

Caso 3

alt text

confuso di nuovo. Il giallo <LinearLayout> è tornato. Tuttavia, i primi due <LinearLayout> con il peso più pesante si riducono? Cosa sta succedendo?

Caso 4

alt text

non ho assolutamente idea di cosa la matematica dietro a tutto questo è.

risposta

25

C'è un modo per ottenere un valore percentuale (0..100%) da Android: layout_weight?

Sicuro. Aggiungili a 100.

Per il "valore percentuale", si desidera che il android:layout_height dei singoli articoli all'interno dello LinearLayout sia 0px.

+8

Mark, hai reso la mia giornata. Non puoi credere quanto tempo ho già speso cercando di capire i casi strani. E un semplice 'android: layout_height =" 0px "' risolve tutto :-) – znq

+1

Impostare layout_width su "fill_parent" e layout_weight su un valore float come "0.2", "0.75" funziona anche, in questo caso più piccolo è il numero più grande parte dello spazio che l'elemento prenderà. Potresti dirmi se questo è un modo accettabile per farlo? – Yar

8

Quando si utilizza Android: layout_height = "fill_parent" per le barre, non si lascia alcuno spazio disponibile. (Dal momento che stanno riempiendo il genitore.) Poiché tutti e 3 sono impostati per riempire, l'altezza richiesta è in realtà 3 volte l'altezza genitore, quindi i pesi vengono applicati a uno spazio rimanente negativo. Questo spiega il comportamento strano che stai vedendo e perché l'impostazione di layout_height a 0px lo risolve.

+0

Il link è morto. Il tuo post sul blog è disponibile altrove? –

Problemi correlati