@ r $ drawable和@drawable有什么区别?

时间:2017-09-17 00:31:50

标签: android android-drawable

我熟悉@drawable,但在克隆的回购中,我发现@ r $ drawable在引用项目中的drawable时被使用。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="true" android:drawable="@r$drawable/ic_home_live_pressed" />
</selector>

VS

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="true" android:drawable="@drawable/ic_home_live_pressed"/>
</selector>

1 个答案:

答案 0 :(得分:0)

“$”(美元符号)用于从Android XML文件引用内部类。

例如:

class Outer {
  class Innter {
  }
}

将被称为

Outer$Inner 

通常这是引用非静态内部类的方法。 “。” (点)表示法用于静态内部类。

您看到的源代码将drawable称为非静态内部类是很奇怪的,因为Drawable是一个静态内部类。

如果您可以共享指向此类代码的存储库的链接,则可以更轻松地解释原因。

在以下网址找到更多相关信息:

Android XML referencing via dollar sign vs dot sign

Error referencing an inner class View in layout/main.xml

上述问题的具体内容有关于此的良好和最新信息: https://stackoverflow.com/a/46223464/550967