以编程方式为Android布局充气

时间:2015-02-10 01:24:12

标签: android xml layout layout-inflater

我想一次又一次地重用现有布局,而不是创建/编写新的xml。目前,我喜欢这个。

enter image description here

我希望以编程方式而不是用xml编写(可能我想在Activity中编写它)。

enter image description here

我可以知道怎么办?另外,另一个问题是,如果我像那样重用,“id”将是相同的。如果是这样,我该如何设置文字?

enter image description here

1 个答案:

答案 0 :(得分:2)

将LinearLayout添加到布局中,然后多次在代码中膨胀header_description布局并将其添加到LinearLayout。

将布局更改为与此类似:

<include layout="@layout/header_list_image"/>

<LinearLayout
    android:layout_id="@+id/description_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_contents"
    android:orientation="vertical" >

<include layout="@layout/header_url"/>
<include layout="@layout/row_listing_like_comment_share"/>
<include layout="@layout/header_comment_separator"/>

在代码中,使用id找到LinearLayout,并逐个扩展描述布局并将它们添加到onCreate()函数中:

LinearLayout layout = (LinearLayout)findViewById(R.id.description_layout);
LayoutInflater inflater = getLayoutInflater();

// add description layouts:
for(int i = 0; i < count; i++)
{
     // inflate the header description layout and add it to the linear layout:
     View descriptionLayout = inflater.inflate(R.layout.header_description, null, false);
     layout.addView(descriptionLayout);

     // you can set text here too:
     TextView textView = descriptionLayout.findViewById(R.id.text_view);
     textView.setText("some text");
}
  

另外,另一个问题是,如果我重复使用,“id”将是相同的。如果是这样,我该如何设置文字?

在膨胀的布局上调用findViewById(),例如:

descriptionLayout.findViewById(R.id.text_view);

不喜欢这样:

findViewById(R.id.text_view);