以编程方式为 android 布局膨胀
Inflate programmatically for android layout
我想一次又一次地重复使用现有的布局,而不是 creating/writing 新的 xml。目前,我有这样的。
我想以编程方式这样写,而不是写在 xml 中(可能我想写在 Activity 中)。
请问怎么办?另外,另一个问题是,如果我那样重用,"id" 将是相同的。如果可以,如何设置文本?
向您的布局添加一个 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");
}
Also, another problem is that if I reuse like that, "id" will be same. If so, how can I set text?
在展开的布局上调用 findViewById(),例如:
descriptionLayout.findViewById(R.id.text_view);
不是这样的:
findViewById(R.id.text_view);
我想一次又一次地重复使用现有的布局,而不是 creating/writing 新的 xml。目前,我有这样的。
我想以编程方式这样写,而不是写在 xml 中(可能我想写在 Activity 中)。
请问怎么办?另外,另一个问题是,如果我那样重用,"id" 将是相同的。如果可以,如何设置文本?
向您的布局添加一个 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");
}
Also, another problem is that if I reuse like that, "id" will be same. If so, how can I set text?
在展开的布局上调用 findViewById(),例如:
descriptionLayout.findViewById(R.id.text_view);
不是这样的:
findViewById(R.id.text_view);