我通常將xml設爲可繪製爲android:icon="@drawable/my_icon"
但是在某些項目中,我看到的代碼爲android:icon="?my_icon"
。android:icon =「@ drawable/my_icon」和android:icon =「?my_icon」之間的區別?
android:icon="@drawable/my_icon"
和android:icon="?my_icon"
有什麼區別?
我通常將xml設爲可繪製爲android:icon="@drawable/my_icon"
但是在某些項目中,我看到的代碼爲android:icon="?my_icon"
。android:icon =「@ drawable/my_icon」和android:icon =「?my_icon」之間的區別?
android:icon="@drawable/my_icon"
和android:icon="?my_icon"
有什麼區別?
指向此文件,並從那裏參考答案:Applying styles and themes
就像樣式,主題也是在XML元素中聲明,並以同樣的方式被引用。不同之處在於,通過Android Manifest中的元素和元素將主題添加到整個應用程序或活動 - 主題不能應用於單個視圖。
讓我們的鏈接所定義的主題的一個示例的聲明:(?)
<?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符號表示我們正在引用之前在別處定義的資源(可能來自此項目或來自Android框架)。 (例如,panelTextColor使用與事先定義的panelForegroundColor相同的顏色。)此技術只能用於XML資源。
問號表示我們是引用當前加載的主題中的資源值。這是通過參考具體的名稱值來完成的。
因此,如果您看到menuItemTextColor
指向另一個項目panelTextColor
,該項目在其值前仍有問號。爲什麼?因爲我們再次引用當前加載的customTheme
的資源值。
同樣,儘管您尚未提及任何代碼,但其當前加載的主題有可能是item
,其名稱爲my_icon
,其值引用指向項目中某個可繪製對象的資源值。
希望這會使你清楚一點。