2014-05-20 20 views
8

Ho creato un GridLayout in un file xml con 3 colonne e 2 righe. Come posso nascondere la seconda riga tramite codice?Nascondi riga in GridLayout

Ho provato a impostare la visibilità persa per le viste all'interno di quella riga ma la prima colonna sembra espandersi il più possibile.

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

Qui è quando ho nascondere i punti di vista:

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

È possibile rimuovere questi due elementi, come se in seconda fila u avere due elementi rimuoverli dalla lista e popolano nuovamente i dati. Risolverà il tuo problema più, se non vuoi perdere questi dati mettili in un'altra lista e prendili quando vuoi. –

risposta

0

Se si sostituisce "View.GONE" con "View.INVISIBLE", il punto di vista in prima fila non sarà visto (invisibile), tuttavia saranno ancora misurati e il GridLayout si comporterà come se fossero ancora lì. Utilizzando i risultati Fuori in misurarli zero e la GridLayout crolla Row 1.

findViewById(R.id.tvName).setVisibility(View.INVISIBLE); 
    findViewById(R.id.tvNameSpace).setVisibility(View.INVISIBLE); 
    findViewById(R.id.tvNameLabel).setVisibility(View.INVISIBLE);