2013-01-08 8 views
7

Układy android używają layout_weight. Dążę do 1/3 dla wszystkich komponentów, ale czasami stopka jest dosłownie ustawiona, by zniknąć, a następnie widoczna. W jaki sposób obliczanie ciężaru działa, gdy ustawienie jest widoczne? Nie widzę zawartości w układzie liniowym, który ma 1/3 wagi?android: layout_weight = "33" jak to się dzieje-> widoczny widoczny-> nie ma to wpływu?

+0

Właściwie ktoś powinien odpowiedzieć na to pytanie. –

Odpowiedz

-1

upewnij się ustawić wysokość do 0DP a następnie ustawić wagę na wszystkich widokach na 1

tj

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

gdy widok jest ustawiony na minionych pozostałych widokach wypełni się ich stosunek ekranu. Np. Jeśli ustawisz trzeci widok jako pierwszy, dwa pierwsze wyświetlenia zajmą 50% każdej dostępnej przestrzeni w układzie. Ponadto, jeśli chcesz, aby pozostałe widoki zajmowały 1/3 miejsca (np. 2/3 1/3 stosowane i zostawić puste) ustawić swój ukryty widok na niewidoczny nie poszedł

0

wydaje się konieczne zadzwonić refreshDrawableState() na widoku po zmianie jego wagę dla zmiany mają być świadczone:

((LinearLayout.LayoutParams) btnFav.getLayoutParams()).weight = 3f; 
btnFav.refreshDrawableState(); 
Powiązane problemy