2012-04-13 15 views
0

Ich versuche, eine Liste von LinearLayout werden VISIBLE werden mit einem Klick auf eine "Kopfzeile" LinearLayout.Android - zusammenklappbar LinearLayout mit mehreren Elementen

<LinearLayout android:id="@+id/sample_title" ...> 
    <TextView ... /> 
</LinearLayout> 
<LinearLayout 
    android:id="@+id/sample_content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:visibility="gone" > 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:duplicateParentState="true" 
     android:orientation="horizontal" 
     android:visibility="visible" > 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1.0" 
      android:gravity="left" 
      android:text="Sample text 1" 
      android:textColor="@color/white" /> 
     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="" /> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:duplicateParentState="true" 
     android:orientation="horizontal" 
     android:visibility="visible" > 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1.0" 
      android:gravity="left" 
      android:text="Sample text 2" 
      android:textColor="@color/white" /> 
     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="" /> 
    </LinearLayout> 
</LinearLayout> 

Programmatically:

mSampleTitle = (LinearLayout) mView.findViewById(R.id.sample_title); 
mSampleTitle.setOnClickListener(this); 
mSampleContent = (LinearLayout) mView.findViewById(R.id.sample_content); 

[...] 

public void onClick(View v) { 
    if (v == mSampleTitle) { 
     mSampleContent.setVisibility(mSampleContent.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE); 
    } 
} 

Es funktioniert gut, wenn es nur einen TextView zu zeigen, aber sobald es mehr ist, wird nur der erste sichtbar wird und der ganze Rest ist nur Leerzeichen .

Vielen Dank

+0

Sind alle Ihre Textviews als „fill_parent“ erklärt? – dmon

+0

Ich habe das OP mit dem kompletten XML bearbeitet. – shkschneider

+0

Sieht aus, als hätte ich ein 'android vergessen: orientation =" vertical "' ... – shkschneider

Antwort

0

Mein schlechter, dummer Fehler.

vergaß ich die android:orientation="vertical". Der Code, der die Sichtbarkeit ändert, funktioniert einwandfrei.

<LinearLayout 
    android:id="@+id/sample_content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:visibility="gone" > 

<LinearLayout 
    android:id="@+id/sample_content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:visibility="gone" > 

ich immer noch seltsam finden, dass sie so viel Leerraum unterhalb dieser horizontalen Linearlayout waren ...

Verwandte Themen