我使用Tab布局显示3个不同的内容视图,但是有几个视图(精确的按钮),这些视图在所有3个内容视图中是通用的。目前,我已经唯一地识别了所有常见的观点,例如
android:id=@+id/tab1_button1
即使它们执行相同的功能,尽管当前显示了哪个标签内容。
有没有办法可以在所有标签内容中保持相同的视图ID?是仅仅识别具有相同ID的视图的问题?
因为我正在使用Tabs我明白TabHost必须是Layout的根节点,因此我不能在另一个Layout中使用TabHost。我能理解这一点吗?
答案 0 :(得分:1)
您可以在所有标签上android:id=@+id/tab_button1
的标签button1
中使用相同的ID。然而,它不是一个好的设计,你最好提取你的布局的类似部分包括,以避免代码重复。更多信息here。
答案 1 :(得分:0)
如上所述Here
用于声明UI元素的XML词汇表紧跟着 结构和命名的类和方法,其中元素名称 对应于类名和属性名对应于方法。
任何View对象都可以具有与之关联的整数ID,以便唯一 识别树中的视图。
ID在整个树中不一定是唯一的,但应该是 在您正在搜索的树的一部分中是唯一的(可能经常 是整棵树,所以最好是完全独特的 可能的)。
因此,您可以对任意数量的视图使用相同的ID。但最佳做法应该是对相似的视图使用相同的id。您只需要记住,您应该只在您寻求其子视图的视图上调用findViewById()
。
如果在具有多个具有相同ID的子视图的视图上调用findViewById()
,则该行为未记录,并且依赖于其当前实现是不明智的。