在Android Studio中,如果我这样写:
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
从哪里查找?它在项目的配置中吗?
[添加的问题]
两者的格式非常不同:一个是@color/dark_grey
,一个是@layout/content_reminders
。甚至接受文件夹res/layout
和res/values
都是特殊的并且以特殊的方式对待它,Gradle怎么知道我键入@layout/content_reminder
时不是在谈论content_reminder
文件中的值res/values/layout.xml
(与layout.xml
之下的文件相对res/layout
)?
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构建中生成的文件上发生。
layout
,color
,string
等标签是特殊的。键入时@layout/
,自动完成将显示所有布局文件。这件事是在Android Studio中完成的。IDE可以理解这些标记。因此,您不能引入新标签。
Gradle如何识别这一点?好吧,我不确定Gradle是否在背后。将Build Tools
随你的SDK可能会负责。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句