首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图标“@drawable/my_android:icon=”和android:icon="?my_icon“的区别?

图标“@drawable/my_android:icon=”和android:icon="?my_icon“的区别?
EN

Stack Overflow用户
提问于 2014-01-10 16:27:06
回答 1查看 283关注 0票数 5

我通常在xml中将drawable设置为android:icon="@drawable/my_icon",但在一些项目中我看到代码android:icon="?my_icon"

android:icon="@drawable/my_icon"android:icon="?my_icon"有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2014-01-10 16:43:01

指向本文档并引用其中的答案:Applying styles and themes

与样式一样,主题也在

元素中声明,并以相同的方式引用。不同之处在于,您可以通过Android Manifest中的和元素向整个应用程序或活动添加主题-主题不能应用于单个视图。

让我们以链接上定义的主题声明为例:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="CustomTheme">  
    <item name="windowBackground">@drawable/screen_background_white</item>
    <item name="panelForegroundColor">#FF000000</item>
    <item name="panelBackgroundColor">#FFFFFFFF</item>      
    <item name="panelTextColor">?panelForegroundColor</item>
    <item name="panelTextSize">14</item>
    <item name="menuItemTextColor">?panelTextColor</item>
    <item name="menuItemTextSize">?panelTextSize</item>
  </style>
</resources>

请注意at符号(@)和问号(?)的用法引用资源。at-符号表示我们引用了先前在其他地方定义的资源(可能来自此项目或来自Android框架)。(例如,panelTextColor使用预先定义的分配给panelForegroundColor的相同颜色。)这种技术只能在XML资源中使用。

问号表示我们正在引用当前加载的主题中的资源值。这是通过按其名称值引用特定的来完成的。

因此,如果您看到menuItemTextColor指向另一个项目panelTextColor,该项目值前面也有问号。为什么?因为我们再次引用了当前加载的customTheme中的资源值。

类似地,尽管您没有提到任何代码,但是当前加载的主题可能有一个名为my_iconitem,它的值引用了一个指向项目中可绘制内容的资源值。

希望这能让你明白一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21039310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档