当调用以下方法时,动态布局将填充到parent_view。
public void Generate_tour_plan(String mark, OnClickListener o) {
parent_view = (LinearLayout) rootView
.findViewById(R.id.tour_iternary_wrapper);
hiddenInfo1 = getActivity().getLayoutInflater().inflate(
R.layout.tour_plan, null, false);
Button minus = (Button) hiddenInfo1.findViewById(R.id.plus);
minus.setText(mark);
CustomAutoCompleteTextView dealer_search = (CustomAutoCompleteTextView) hiddenInfo1
.findViewById(R.id.account_code);
CustomAutoCompleteTextView town_search = (CustomAutoCompleteTextView) hiddenInfo1
.findViewById(R.id.town);
town_search.setAdapter(city_adapter);
dealer_search.setAdapter(adapter);
minus.setOnClickListener(o);
parent_view.addView(hiddenInfo1, 0);
}
这里外部布局将像堆栈eg.(5,4,3,2,1)
一样添加,所以我需要删除除第一个之外的所有布局。
for (int j2 = parent.getChildCount() - 1; j2 > 0; j2--) {
Log.i("TAG IS", j2 + "");
ViewGroup vv = (ViewGroup) parent.getChildAt(j2);
vv.removeAllViews();
}
以上代码用于从上到下删除项目。但这是从下到上的工作。我想删除像堆栈一样的项目。
答案 0 :(得分:3)
您可以使用removeViews(start, count)
https://developer.android.com/reference/android/view/ViewGroup.html#removeViews(int,%20int)
从第一个孩子移到最后一个孩子的例子:
layout.removeViews(1, layout.childCount - 1)
答案 1 :(得分:1)
您可以通过调用removeView(View view)
从父级中删除子视图,例如:
parent.removeView(child);
答案 2 :(得分:0)
尝试像这样呼叫removeViewAt(position)
:
parent_view.removeViewAt(位置);
答案 3 :(得分:0)
int count = (your viewGroup).getChildCount() - 1;
for (int i = count; i > 0; i--) {
(your viewGroup).removeViewAt(i);
}
答案 4 :(得分:0)
我最近需要做一件非常相似的事情。在我的情况下,我还需要确保视图在删除之前满足特定条件,只是为了确定。值得一提的是,这里是 Vijay Makwana 发布的同一代码段的 Kotlin 代码段:
for(i in (childCount - 1) downTo 1) {
val child = parent_layout.getChildAt(i)
// before removing it, you can check something here
parent_layout.removeView(child)
}