2014-01-10 19 views

回答

2

指向此文件,並從那裏參考答案: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,其值引用指向項目中某個可繪製對象的資源值。

希望這會使你清楚一點。