我了解到:
@+id 新增一个资源id @id和android:id,引用现有的资源id
但是有时候我看到有的程序里,全局搜索只能搜索到@id/xxx,从没看到过@id/xxx的定义,那么这个id是怎么在R.java中生成的呢?是系统内置的关键字?
另外,我看到有的同一个程序中不同的组件使用了同一个id,比如下图,NavigationView和ImageView都使用了android:id="@id/navigation_view",为什么?
我了解到:
@+id 新增一个资源id @id和android:id,引用现有的资源id
但是有时候我看到有的程序里,全局搜索只能搜索到@id/xxx,从没看到过@id/xxx的定义,那么这个id是怎么在R.java中生成的呢?是系统内置的关键字?
另外,我看到有的同一个程序中不同的组件使用了同一个id,比如下图,NavigationView和ImageView都使用了android:id="@id/navigation_view",为什么?
也有可能是在values文件夹下自定义了一组id集合,这个也可以直接使用@id/xxx来引用
<resources>
<item name="navigation_view" type="id" />
</resources>
3 回答1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
1 回答882 阅读✓ 已解决
2 回答1k 阅读
2 回答928 阅读
1 回答894 阅读
2 回答745 阅读
正如你所了解的,当我们在xml中为某个控件定义id时使用@+id/xxx 在R.java中如果不存在就会生成相应的xxx变量名值为int型,存在就会使用原来的int值,所以每一个xxx都有一个唯一的标识。
然而当我们在资源文件中定义ids.xml文件,在其中可以自定义id类型的变量名形如:
于是我们可以在布局文件中如下引用:
至于你说的引用相同的@id/xxx 也是于与@+id/xxx 相同的道理。