Is the plus sign in the following an error: android:icon="@+drawable/

Is the plus sign in the following an error: android:icon="@+drawable/

我一直在 github 上查看这个 Android 绘图应用程序:

https://github.com/valerio-bozzolan/AcrylicPaint

在定义菜单布局的 XML 文件中,所有 android:icon 行在 drawable 之前都有一个加号。我在 Whosebug 或其他地方找到的 drawable 个示例中的 None 个带有该加号。 Android Studio 2.2.3 给我每个人一个 "Cannot resolve symbol" 错误。如果我删除加号,该错误就会消失。但该应用程序似乎也可以与加号配合使用。加号是完全错误的吗?或者这里发生了什么我不明白的事情?

文件是/app/res/menu/main.xml,想看的话。这是一些示例代码的屏幕截图,红色文本显示错误。感谢您提供的任何帮助。

马虎错误。您必须使用 @drawable 而不是 @+drawable

android:icon="@drawable/

向您展示如何访问保存在应用程序的可绘制对象文件夹中的可绘制对象。

只有id编码为android:id="@+id/dummy"

对于 drawable 和其他你不需要在里面有 + 的东西

可以像android:icon="@drawable/yourImage"

一样使用
android:style="@style/myStyle"

android:id="@+id/aSampleId" 不同,您无法即时生成图像。如果你想访问 drawable 文件夹,那么你需要在文件夹本身中有一个图像。

假设您在 可绘制文件夹 drawable/anImage.png 中有一张图像,那么您需要使用 android:icon="@drawable/anImage"

调用它

所以加号在你的案例中看起来很神秘。加号我来详细解释一下。

  1. 当我们为任何视图指定一个 id 时,它通常是新的并且该 id 引用在 R.id class.
    中不存在 因此,当您使用 findViewById(R.id.view) 之类的内容时,您无法访问该特定 ID,因为它不可用。
    因此,为了通知编译器必须在 R.id 文件中添加新引用,我们将 id 声明为 android:@+id/view,此处 + 表示将此 id 添加到 R.id 引用。

  2. 但是对于可绘制对象、样式、颜色等,您首先在编译器可以访问的各自文件夹中创建它们(比如 Gradle),并自动引用他们各自的 class 如 R.drawable、R.style 等
    因此,当我们在 xml 中引用它们时,我们不使用 + 号,因为该引用已经在它们各自的声明中创建。