2017-01-17 10 views
0

2つのレイアウトがあり、1つのレイアウトを別のレイアウトに展開し、条件が真である回数だけtextviewを含むこの膨大なレイアウトを表示したい。 textviewの値をiの値として設定し、レイアウトの上余白を設定します。しかし、私は1行だけの値を表示し、残りは空白で、setMargin()も働いていません。私はまだ行っていません。マージンを使用してレイアウトを動的に表示する方法

public void displayRows(){ 
      int n= 6; 
      for(int i=0;i< n;i++){ 

      LinearLayout container = (LinearLayout)findViewById(R.id.layoutContainer); 

      View hiddenInfo = getLayoutInflater().inflate(R.layout.dynamic, container, false); 
      container.addView(hiddenInfo); 
      LinearLayout hiddenLayout = (LinearLayout)findViewById(R.id.dynamic); 

      TextView textView = (TextView) findViewById(R.id.text); 

      textView.setText("Text"+i); 

      LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
         LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); 

     layoutParams.setMargins(0, 30, 0, 0); 
      hiddenLayout.setLayoutParams(layoutParams); 
      hiddenLayout.addView(textView); 
       } 

container.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:id="@+id/layoutContainer" 
    android:animateLayoutChanges="true" 
    android:layout_gravity="center|top" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

     <LinearLayout 
      android:id="@+id/li1" 
      android:layout_gravity="center" 
      android:paddingTop="5dp" 
      android:paddingBottom="5dp" 
      android:background="@color/colorAccent" 
      android:onClick="displayRows" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <TextView 
       android:textColor="@color/colorPrimary" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="12sp" 
       android:layout_gravity="center" 
       android:text="Rows"/> 
     </LinearLayout> 

    </LinearLayout> 

dynamic.xml

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

    <LinearLayout 
     android:id="@+id/dynamic" 
     android:background="@color/colorAccent" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:id="@+id/text" 
      android:text="" 
      android:textColor="@color/colorPrimary" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 
</LinearLayout> 

私はまた、[削除]をクリックしてボタンを生成されたすべての動的な行を削除する方法を知りたいです。

答えて

1

LinearLayout hiddenLayout = (LinearLayout) hiddenInfo.findViewById(R.id.dynamic); 
TextView textView = (TextView) hiddenInfo.findViewById(R.id.text); 

LinearLayout hiddenLayout = (LinearLayout)findViewById(R.id.dynamic); 
TextView textView = (TextView) findViewById(R.id.text); 

を交換し、そのは、指定された子がすでに親を持っていることを私に与えてはIllegalStateException

hiddenLayout.addView(textView); 
+0

この行を削除してください。 –

+0

更新を見る –

+0

ありがとう、その仕事。削除ボタンをクリックしてこれらの行をすべて削除する方法を教えてください。 –

関連する問題