元素里邊申明,也是以同樣的方式引用。不同的是通過在AndroidManifest中定義的元素將主題添加到整個程序或者某個Activity,但是主題是不能應用在某一個單獨的View里。定義Theme的一個例子

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Android Styles & Themes(下)——Theme

系統 1999 0

上一篇幅 Android Styles & Themes(一)——Style 介 紹了Style神奇的魅力,下面繼續體驗Theme的效果。就像Style一樣,Theme依然在<style>元素里邊申明,也是以同樣的 方式引用。不同的是通過在Android Manifest中定義的<application>和<activity>元素將主題添加到整個程序或者某個 Activity,但是主題是不能應用在某一個單獨的View里。

定義Theme的一個例子

<?xml version=”1.0″ encoding=”UTF-8″?>
<resources>
<style name=”NewTheme” parent=”android:Theme.Black”>
<item name=”android:windowNoTitle”>true</item>
<item name=”android:textSize”>14sp</item>
<item name=”android:textColor”>#FFFF0000</item>
</style>
</resources>

以上資源的定義,相信大家一看就明白,在這里需要強調的是:有些資源定義中使用了@符號和?符號來引用資源。,對這2個符號的作用解釋如下:

  • @ 表明我們應用的資源是前邊定義過的(或者在前一個項目中或者在Android 框架中)。
  • ?表明我們引用的資源的值在當前的主題當中定義過。

這些技巧只能用在XML資源當中

在程序中使用Theme的方法

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.NewTheme);
setContentView(R.layout.main);
}
這里需要注意的是,對于theme資源的引用,資源ID不是文件名(theme.xml),而是資源名(NewTheme)。運行后的界面顯示如下:

在AndroidManifest.xml中應用Theme

  • 為了在當前所有的Activity當中使用Theme,可以打開AndroidManifest.xml 文件,編輯<application>標簽,讓其包含android:theme屬性,值是一個主題的名字,例 如:<application android:theme=”@style/NewTheme”>。
  • 如果只是想讓程序當中的某個Activity擁有這個Theme,那么可以修改<activity>標簽。Android中提供了 幾種內置的資源,有好幾種Theme你可以切換而不用自己寫。比如可以用對話框Theme來讓你的Activity看起來像一個對話框。在 manifest中定義,例如:<activity android:theme=”@android:style/Theme.Dialog”>
  • 如果喜歡一個Theme,但是想做一些輕微的改變,只需要將這個Theme添加為parent。Android SDK為我們提供了很多現成的Theme,部分列舉如下:

    比如:我們修改Theme.Dialog Theme,繼承Theme.Dialog來生成一個新的Theme。<style parent=”@android:style/Theme.Dialog”>
    繼承了Theme.Dialog后,我們可以按照我們的要求來調整Theme。我們可以修改在Theme.Dialog中定義的每個item元素的值,然 后我們 在Android Manifest 文件中使用NewDialogTheme而不是 Theme.Dialog。

總結說明

以上的例子比較簡單,在使用中也發現不少問題,例如Android SDK中定義的一個theme.xml如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<style name=”CustomTheme”>
<item name=”android:windowNoTitle”>true</item>
<item name=”windowFrame”>@drawable/screen_frame</item>
<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>

這個例子看上去,就發現幾個不太符合規范的地方:

  1. item name屬性有些沒有前綴Android,這似乎不符合Android SDK中定義的規范,規范詳解請閱讀 AndroidManifest.xml文件結構說明
  2. <item name=”panelTextSize”>14</item>,值缺少單位,應該是14sp;

將這個theme引用到程序中,發現如下錯誤:Error:no resource found that matches the given name: panelForegroundColor,這個錯誤讓人莫名其妙。Android SDK中提供的例子程序,以前也發現了一些小問題,比如說:XML文件中少了符號“。由于對Theme文檔的定義、到底有哪些屬性,Google沒有提供 文檔說明,這個錯誤不知道如何修改。在網上google了下,很多人都發現了這個問題,目前還沒有人給出具體的解決辦法,我們會繼續深入的研究 Theme,有同樣問題的可以在后續篇幅中關注這個問題的解決方法。

Android Styles & Themes(下)——Theme


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美另类视频 | 国产成人亚洲毛片 | 日本午夜在线观看 | 黄桃av | 国产欧美综合一区二区 | 久久久精品一区二区三区 | 欧美精品人爱a欧美精品 | 偷拍小美女洗澡在线播放 | 色综合 成人| 国产精品九九久久99视频 | 精品久久久久久久久久 | 欧美三级在线 | 欧美欧美欧美 | 电影长安道无删减免费看 | 懂色一区二区三区免费观看 | 国产三级在线精品男人的天堂 | 国产美女啪啪 | 日韩精品亚洲专区在线电影不卡 | 久久99国产亚洲精品观看 | 色狠狠色综合吹潮 | 免费国产一区 | 嫩草嫩草嫩草 | 欧美特黄一级视频 | 免费又粗又硬进去好爽A片视频 | 色婷婷视频在线观看 | 99热com| 亚洲精品一区二区深夜福利 | 久久制服丝袜 | 99久久久久久久 | 免费看淫片 | 亚洲精品国产精品国自产在线 | 亚洲国产精品成 | 丁香六月伊人 | 宣言个人资料 | 成人免费大片黄在线播放 | 天天摸天天添 | 亚洲高清一区二区三区 | 免费国产黄频在线观看视频 | 成人破解版 | 成人 在线| 青草视频在线免费观看 |