2013-01-08 13 views
7

I layout di Android utilizzano un layout_weight. Sto mirando a 1/3 per tutti i componenti, ma a volte il piè di pagina è letteralmente impostato su andato, e quindi visibile. Come funziona il calcolo del peso quando si passa da visibile a visibile? Non vedo il contenuto all'interno di un layout lineare con 1/3 di peso?android: layout_weight = "33" come è andato andato-> visibile visibile-> andato effetto questo?

+0

In realtà qualcuno dovrebbe votare questa domanda. –

risposta

-1

assicurarsi di impostare l'altezza a 0DP e quindi impostare il peso su tutti i punti di vista per 1

cioè

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

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="Hello World, MyActivity" 
     android:background="#f00" 
     /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="Hello World, MyActivity" 
     android:background="#00f" 
     /> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="Hello World, MyActivity" 
     android:background="#0f0" 
     /> 
</LinearLayout> 

quando la vista è impostato su finiti i restanti viste riempiranno il loro rapporto dello schermo. Ad esempio, se si imposta la terza vista per le prime 2 viste occuperà il 50% ciascuno dello spazio disponibile nel layout

Inoltre, se si desidera che le visualizzazioni rimanenti occupino solo 1/3 dello spazio ciascuna (cioè 2/3 utilizzato e lasciare 1/3 vuoto) impostare la visualizzazione nascosta di non invisibile andato

0

sembra essere necessario chiamare refreshDrawableState() su una vista dopo aver cambiato il suo peso per il cambiamento da rendere:

((LinearLayout.LayoutParams) btnFav.getLayoutParams()).weight = 3f; 
btnFav.refreshDrawableState(); 
Problemi correlati