2014-05-20 15 views
8

Zrobiłem GridLayout w pliku xml z 3 kolumnami i 2 wierszami. Jak ukryć drugi rząd za pomocą kodu?Ukryj wiersz w GridLayout

Próbowałem ustawić brak widoczności dla widoków wewnątrz tego wiersza, ale pierwsza kolumna wydaje się rozwijać tak bardzo, jak to możliwe.

<GridLayout 
        android:id="@+id/lytInfo" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:alignmentMode="alignBounds" 
        android:columnCount="3" 
        android:columnOrderPreserved="false" 
        android:paddingTop="@dimen/padding.verySmall" > 

       <TextView android:id="@+id/tvNameLabel" 
        android:ellipsize="end" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:text="@string/name" 
        android:textColor="@color/black" 
        android:textSize="@dimen/text.normal" /> 

       <Space android:layout_width="@dimen/padding.veryVerySmall" android:id="@+id/tvNameSpace"/> 

       <TextView 
        android:id="@+id/tvName" 
        android:ellipsize="end" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:textColor="@color/darkRed" 
        android:textSize="@dimen/text.normal" 
        android:textStyle="bold" /> 

       <TextView 
        android:ellipsize="end" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:text="@string/pwd" 
        android:textColor="@color/black" 
        android:textSize="@dimen/text.normal" /> 

       <Space android:layout_width="@dimen/padding.veryVerySmall" /> 

       <TextView 
        android:id="@+id/tvPwd" 
        android:ellipsize="end" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:textColor="@color/darkRed" 
        android:textSize="@dimen/text.normal" 
        android:textStyle="bold" /> 


      </GridLayout> 

Oto kiedy ukryć widoki:

f(knownName) 
{ 
    viewRoot.findViewById(R.id.tvName).setVisibility(View.GONE); 
    viewRoot.findViewById(R.id.tvNameSpace).setVisibility(View.GONE); 
    viewRoot.findViewById(R.id.tvNameLabel).setVisibility(View.GONE); 
    break; 
} 
+0

Można usunąć te dwa elementy tak jakby w drugim rzędzie u mają dwa elementy usunąć je z listy i ponownie wypełnić dane. To rozwiąże twój problem, a jeśli nie chcesz stracić tych danych, umieść je na innej liście i otrzymuj je, kiedy tylko chcesz. –

Odpowiedz

0

Jeśli zastąpić „View.GONE” z „View.INVISIBLE”, poglądy w rzędzie nie będą widoczne (niewidoczny) jednak nadal będą mierzone, a GridLayout będzie zachowywać się tak, jak są one nadal tam. Korzystanie Gone wyników w ich pomiaru zero, a GridLayout zapada Row 1.

findViewById(R.id.tvName).setVisibility(View.INVISIBLE); 
    findViewById(R.id.tvNameSpace).setVisibility(View.INVISIBLE); 
    findViewById(R.id.tvNameLabel).setVisibility(View.INVISIBLE); 
Powiązane problemy