如何动态添加/删除另一个布局(相对,线性,...)?

时间:2013-12-13 09:08:59

标签: android listview layout dynamic scrollview

我正在编写一个应用程序,要求用户填写动态表单。

用户可以从此页面动态添加或删除组件(Button,EditText,...)。

为此,我创建了一个带有listView的personnal适配器,并在需要时添加或删除元素。但是如果你添加了很多元素,布局会快速填满,所以我使用了scrollView。

在互联网上长时间浏览后,我读到了不建议在ScrollView中创建ListView(2列表可能会产生冲突)。 实际上,当我使用两者时,ListView的大小不会刷新。我试图用ViewTreeObserver解决这个问题,但这不是一个干净的解决方案......它需要很多CPU ...:/

之后,我尝试创建一个“扩展LinearLayout”类,但我无法看到如何通过按钮单击来添加或删除一个组件来捕获该事件。

是否可以创建一个对象(来自xml布局)并动态添加或删除它(不同的ID,...)?

如何制作动态页面?有可能吗?

感谢您的帮助!!!

以下是我的申请表:http://postimg.org/image/5shoatvl1/

2 个答案:

答案 0 :(得分:0)

您可以使用LayoutInflater为XML对象(如LinearLayout或ListView)充气: http://developer.android.com/reference/android/view/LayoutInflater.html

执行此操作后,您可以将任何视图添加到ViewGroup,例如:如果您要向ScrollView添加按钮,则可以调用:

scrollView.addView(button);

您可以为实现View类的任何对象执行此操作。这包括LinearLayout和ScrollView。

您可以通过在目标视图的父视图上调用removeView来删除视图。例如,您想要删除您只需调用的按钮:

scrollView.removeView(button);

您还可以迭代所有视图并删除符合以下特定条件的视图:

for(int i=0; i<((ViewGroup)v).getChildCount(); ++i) {
   View nextChild = ((ViewGroup)v).getChildAt(i);
   if(v.meetsReq()) {
       //do something
   }
}   

答案 1 :(得分:0)

你可以创建只能显示edittext的布局文件。当你的视图中的edittext附加在dynemically中然后膨胀那个视图并添加到你的主视图中。所以每当你使用充气器添加或删除任何视图。 / p>

LayoutInflater layoutInflater = (LayoutInflater) viewImageDetailView
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View convertView = layoutInflater.inflate(
                    R.layout.xml_edittext, null, false);

我希望这对你有用......