动态地将xml布局添加到当前的Activity布局中

时间:2015-06-02 12:04:13

标签: android xml android-layout

我有一个用户名的ArrayList,用于我想要添加xml布局(layout_one_user.xml)的每个用户名,并将用户名String放入布局中存在的每个TextView(name_user)中。

主要活动中的代码是:

    ll_counts = (LinearLayout) findViewById(R.id.ll_counts);
    lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    LayoutInflater inflater_one_user = MainScreen.this.getLayoutInflater();
    View layout_one_user = inflater_one_user.inflate(R.layout.layout_one_user, null);

    TextView txt_counts     = (TextView)  layout_one_user.findViewById(R.id.name_user);
    ImageView delete_icon   = (ImageView) layout_one_user.findViewById(R.id.icon_delete);
    ImageView edit_icon = (ImageView) layout_one_user.findViewById(R.id.icon_edit);

for (int i = 0; i < usernames.size(); i++) {
    layout_one_user = new View(this);
    txt_counts.setText( usernames.get(i) );
    ll_counts.addView(layout_one_user);
    }

layout_one_user是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" 
android:padding="5dp"
>

<ImageView
    android:id="@+id/icon_edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"
    android:src="@drawable/ic_edit_black_24dp" />

<ImageView
    android:id="@+id/icon_delete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="20dp"
    android:layout_toLeftOf="@+id/icon_edit"
    android:src="@drawable/ic_delete_black_24dp" />

<TextView
    android:id="@+id/name_user"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/icon_delete"
    android:layout_centerHorizontal="true"
    android:text="text" 
    />

我主要的布局是:

 <LinearLayout
    android:id="@+id/ll_counts"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/action_bar"
    android:layout_centerHorizontal="true"
    android:orientation="vertical" >
</LinearLayout>

但它并没有在屏幕上显示任何内容。

1 个答案:

答案 0 :(得分:0)

您将自定义布局扩展为layout_one_user

View layout_one_user = inflater_one_user.inflate(R.layout.layout_one_user, null);

然后,在循环的第一次迭代中,用空View覆盖此变量:

layout_one_user = new View(this);

因此,当您向布局添加layout_one_user时,您正在添加“空视图”并且看不到任何结果。

在我看来,您需要为每个用户充气新布局:

for (int i = 0; i < usernames.size(); i++) {
    View layout = getLayoutInflater().inflate(R.layout.layout_one_user, ll_counts, false);
    TextView textView = (TextView)  layout.findViewById(R.id.name_user);
    textView.setText(usernames.get(i));
    ll_counts.addView(layout);
}