Android View ID必须是唯一的吗?

时间:2014-03-09 11:58:07

标签: android view android-viewpager

这个问题依赖于并扩展了之前关于同一主题的问题。

我特别参考“Android Programming Big Nerd ......”的第203页。这本有吸引力且有用的书专门用于解释你必须使用XML作为id。

事实上,情况似乎并非如此。作为整本书中特殊部分的“更好奇”之一(尽管不是关于这个主题),我发现你必须有一个id,但1,3,32,99,我希望很多人会做以及推荐的R-ensure-unique。

我对ViewPager主题的复杂性感到非常困惑(事实上它只在支持库中...)并且应该欢迎关于简单视图id案例的权威声明。

我在这里提出这个问题,因为大书呆子论坛似乎有些垂死,我敢说Bill&布莱恩不时地来到这里。

3 个答案:

答案 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。