我有一个动态创建的视图,想要通过标记找到它,这可能吗?
我知道函数findViewById
,是否有类似的标签?
答案 0 :(得分:19)
LinearLayout linLayout = (LinearLayout)findViewWithTag("layout1");
但我认为你不需要动态视图的标签。您可以通过以下代码
来检索动态资源for (int i=0; i < total_resource; i++) {
//retrieve id dynamically
int id = getResources().getIdentifier("resource"+i, "id", getPackageName());
TextView myText = (TextView) findViewById(id); // get the element
}
答案 1 :(得分:1)
创建ids.xml以存储您的ID:
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="component1" /> <item type="id" name="component2" /> <item type="id" name="component3" /> </resources>
设置为动态创建的组件,如:
Button1.setId(R.id.layout1); buttom2.setId(R.id.layout2); button3.setId(R.id.layout3);
另一种方法是在动态创建
时为组件设置标记button1.setTag(1);
使用getTag()
获取该组件
答案 2 :(得分:1)
您可以在其他视图中按标签查找。
说,您拥有LinearLayout,其中包含几个按钮,您可以将它们动态放置在其中,并为每个按钮分配标签。您必须先通过id找到该LinearLayout b / c的ID。然后在该LinearLayout视图内按标签查找按钮:
LinearLayout ll=(LinearLayout)findViewById(R.id.mylinearlayout);
Button btn= (Button)ll.findViewWithTag("mybtntag");//tag must be string