如何使用边距动态显示布局

时间:2017-01-17 09:54:03

标签: android

我有两种布局,我将一种布局扩展到另一种布局,并希望在条件成立时显示包括textview在内的这种膨胀布局。我将textview值设置为i的值,并设置布局上边距。但是它只在一行中显示i的值而休息是空白的,它的setMargin()也没有工作.Below就是我所做的。

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 个答案:

答案 0 :(得分:1)

替换

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

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

并删除此行

hiddenLayout.addView(textView);