android - 在 Android Studio 中如何从 XML 文件中查找 @values

标签 android xml android-studio

在 Android Studio 中,如果我写:

android:background="@color/dark_grey"

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

如果我有:

<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,我不是在谈论文件 res/values/layout.xml 中的值 content_reminder(相对于文件 layout.xml res/layout 下)?

最佳答案

Android Studio 索引您的 resources .无论你输入什么 res/values/xxxxx.xml使用标签索引,如 <color><string> ,以及 xml 文件中的行号。

建立索引是因为它更有效并且您需要在自动完成期间显示所有选项。那你为什么点击@color/dark_grey , 它搜索索引并转到文件中的行号 drak_grey被定义为。这是如何lookup在 Studio 中工作。

你不能拥有 @layout2 这样的东西在<include>标签,因为没有规定您可以添加它。但是,您可以为自定义 View 或 View 组添加自己的属性。即使在这种情况下,Android Studio 也会为您进行查找,您无需执行任何其他操作。

至于范围,它发生在 Project 中范围。全部resources在您的依赖项(模块)中将被查找。如果你有一个模块,但你还没有将它添加为依赖项,那么该模块将不会用于查找。我认为索引和查找不是发生在原始源文件上,而是发生在 gradle 构建中生成的文件上。

layout , color , string和其他标签是特殊的。当您键入 @layout/自动完成将显示所有布局文件。这个东西是在Android Studio中完成的。 IDE 可以理解这些标签。所以你不能引入新的标签。

Gradle 如何识别这一点?好吧,我不确定 Gradle 是否是它背后的那个。 Build Tools可能是您的 SDK 附带的。

关于android - 在 Android Studio 中如何从 XML 文件中查找 @values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359392/

相关文章:

c# - 是否可以向序列化集合添加属性?

java - 更改 editText 字段内的可绘制图像

android-studio - Webview的单元测试

java - Wrap_Content 带有服装单选按钮?

javascript - Android 键盘调整应用程序 UI : sencha

android - 使可折叠工具栏自动折叠/展开

java - 当 <test> 标签不应超过 1 个时,JAXB 始终返回最后一个 <test> 标签

android-studio - 无法创建虚拟设备: Unable to create Android virtual device

android - 更改 fragment 中的操作栏菜单

android - 我可以使用 ADB 模拟应用程序升级吗?