在android中动态添加UI内容

时间:2012-02-20 13:14:37

标签: android user-interface dynamic-ui

我有一个Android应用程序会询问一个问题,然后是x个选项。 每个选项都包含textviewImageViewradio button

x的值(即选项数)不是常数。我想动态添加UI内容以满足此要求。

目前我已经在布局的xml中编写了代码,最多显示4个选项。如果选项数为2,则使用

之类的内容隐藏选项3和4
tvoption1.setVisibility(View.GONE);
tvoption2.setVisibility(View.GONE);

然而,这不是很可扩展。谁能告诉我如何动态添加java的选项。或者有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

可以在运行时使用这样的inflater添加View

LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.news_categories_item, null);

TextView categoryValueTextView = (TextView)linearLayout.findViewById(R.id.news_category_item_value);

mMainLinearLayout.addView(categoryValueTextView);

在此示例中,包含TextView的LinearLayout会膨胀。然后获取对组成TextView的引用,并将TextView动态添加(在运行时)到主线性布局(mMainLinearLayout)。

可以使用getLayoutInflater()在活动中获取inflater对象。

答案 1 :(得分:1)

从主xml

单独创建行布局

从上下文获取LayoutInflater服务:

LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATE_SERVICE);

使用以下方法将addview添加到main xml中,我假设您在xml中有父布局llParent,并且您希望从列表列表中添加此llPaent中的项目。

for(int i=0;i<list.size();i++)
{
     LinearLayout llView=(LinearLayout)inflater.inflate(R.layout.row);
     //get view id and set values
     TextView txt=(TextView)llView.findViewById(R.id.text);
}

答案 2 :(得分:0)

ListView是显示多个类似项目的好视图。 Here是一个教程(其他带适配器的视图也很好,例如GridViewGallery)。
您可能希望为列表创建自己的adapter,因此您可以将所有三个视图(复选框,图像和文本)显示为一个项目,但网上有很多可用的示例以及在这里。