如何从Android Studio中的XML文件中查找@值

时间:2015-10-27 03:19:30

标签: android xml android-studio

在Android工作室,如果我写:

android:background="@color/dark_grey"

dark_grey中查找了值res/values/colors.xml

如果我有:

<include layout="@layout/content_reminders" />

该值被查询为res/layout/content_reminders.xml

问题:

  • 查找如何完全

  • 如何设置更多查找目录?例如,如果我想在那里@layout2/something_else怎么办?还是不允许?在任何一种情况下,@layout从哪里抬起来?是否在项目的配置中?

[已添加问题]

  • Gradle如何处理歧义?

两者的格式非常不同:一个是@color/dark_grey,一个是@layout/content_reminders。即使接受文件夹res/layoutres/values是特殊的并以特殊方式对待它,Gradle如何知道当我输入@layout/content_reminder时,我不是在谈论价值{{1文件content_reminder中的文件(而不是res/values/layout.xml下的文件layout.xml)?

4 个答案:

答案 0 :(得分:2)

Android Studio会为您的resources编制索引。无论您在res/values/xxxxx.xml中放置什么,都会使用<color><string>之类的标记以及xml文件中的行号进行索引。

索引发生是因为它更有效,您需要在autoComplete期间显示所有选项。那么为什么你点击@color/dark_grey,它会搜索索引并在文件中输入drak_grey定义的行号。这就是lookup在Studio中的工作方式。

@layout2标记中的<include>不能包含任何内容,因为您无法添加它。但是,您可以为自定义View或ViewGroup添加自己的属性。即使在这种情况下,Android Studio也会为您执行查找,而您无需执行任何其他操作。

就范围而言,它发生在Project范围内。将查找依赖项(模块)中的所有resources。如果您有一个模块,但尚未将其添加为依赖项,则该模块将不会用于查找。我认为索引和查找不是发生在原始源文件上,而是发生在gradle构建中生成的文件上。

layoutcolorstring和其他标签很特别。键入@layout/时,自动完成将显示所有布局文件。这件事是在Android Studio中完成的。 IDE可以理解这些标记。所以你不能引入新的标签。

Gradle如何识别这个?好吧,我不确定Gradle是不是背后的人。您的SDK附带的Build Tools可能会负责。

答案 1 :(得分:-1)

android SDK为res / values文件夹下的每个文件生成唯一的Integer值此值在运行时用于查找该特定资源。此文件可以通过在您应用的生成文件夹下打开生成的文件R.java来看待。

答案 2 :(得分:-1)

不不不,你不能使用@ layout2 / something_else。 编译器只关注@layout。

答案 3 :(得分:-2)

<include layout="@layout/a" />

尝试在@layout/a;

上鼠标时按Alt + Insert