我正在尝试以编程方式在现有RelativeLayout中添加LinearLayouts。每个LinearLayout都包含一些按钮,我希望能够通过设置容器LinearLayout的可见性来切换每组按钮的可见性。
// We iterate over a list and call the following to create the new
// layout assigning an index from a int counter
LinearLayout LL = new LinearLayout(MainActivity.this);
LL.setOrientation(LinearLayout.VERTICAL);
LL.setId(nextId);
LinearLayout.LayoutParams LLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
LL.setWeightSum(6f);
LL.setLayoutParams(LLParams);
LinearLayout mll=((LinearLayout) findViewById(R.id.menuLayout));
mll.addView(LL);
我的问题出现在我稍后尝试检索这些布局时,例如能够打开/关闭其可见性。我以为我可以使用
LinearLayout ll = (LinearLayout) findViewById(layoutIndex);
但是当我尝试提供一个int时,findViewById()给了我一个错误,它需要一个资源ID。有没有一种简单的方法可以将我已经指定为这些布局的ID的整数转换为R.id.XXX ID?
谢谢, 安迪
答案 0 :(得分:1)
findViewById(id)
查找作为定义布局的XML的一部分而包含的元素。
getChildAt(index)
可能会更好运,它会在传递的索引处返回View。
答案 1 :(得分:0)
是的!在不使用ID的情况下查找容器中的所有LinearLayout
。
LinearLayout mll= (LinearLayout) findViewById(R.id.menuLayout);//container
for(int i=0; i<mll.getChildCount(); ++i) {
View nextChild = mll.getChildAt(i);
if (nextChild instanceof LinearLayout ) {
//TODO add your code here nextChild is a LL that you wanna find
}
}