这个问题依赖于并扩展了之前关于同一主题的问题。
我特别参考“Android Programming Big Nerd ......”的第203页。这本有吸引力且有用的书专门用于解释你必须使用XML作为id。
事实上,情况似乎并非如此。作为整本书中特殊部分的“更好奇”之一(尽管不是关于这个主题),我发现你必须有一个id,但1,3,32,99,我希望很多人会做以及推荐的R-ensure-unique。
我对ViewPager主题的复杂性感到非常困惑(事实上它只在支持库中...)并且应该欢迎关于简单视图id案例的权威声明。
我在这里提出这个问题,因为大书呆子论坛似乎有些垂死,我敢说Bill&布莱恩不时地来到这里。
答案 0 :(得分:3)
不,它不需要是唯一的,但最好尝试在单个xml文件中保留唯一名称,否则findViewById将遇到问题
a_layout.xml
<View android:id="@+id/name" .../>
<View android:id="@+id/name" .../>
findViewById不知道你是想要第一个还是第二个。但如果它们在单独的文件中
a_layout.xml
<View android:id="@+id/name" .../>
b_layout.xml
<View android:id="@+id/name" .../>
没有冲突,项目范围内的副本都可以,但可能会导致同一个xml出现问题
答案 1 :(得分:0)
不,即使在相同的布局中,id也不必是唯一的。
然而,findViewById()
等函数的行为没有为冲突的id定义,也没有定义布局行为,所以最好保持它们的唯一性。
答案 2 :(得分:-1)
对于相同类型的视图,您应该具有唯一ID。但是对于不同的类型视图,您可以拥有相同的ID。 E.X。
<TextView android:id="@+id/name1" .../>
<TextView android:id="@+id/name2" .../>
上面应该有唯一的ID。
<EditText android:id="@+id/name" .../>
<TextView android:id="@+id/name" .../>
但是对于这种情况,您可以使用相同的ID。