iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
自我挑戰組

Practice again& again.系列 第 19

Android - Theme Resources

  • 分享至 

  • xImage
  •  

Android - Theme Resources 主題樣式資源的定義與使用

Theme Resources 主題樣式資源

  • 位置:開啟 res/values 中的 themes.xml,以及 res/values-nightthemes.xml
    01

  • 內容:從範本建立專案時預設的 <style> 樣式資源

    • res/values/themes.xml:一般模式時套用的主題
    • res/values-night/themes.xml:Dark mode時套用的主體
      • 切換虛擬機/手機裝置至 Dark mode
        02
      • 啟動專案,觀察背景為 res/values-night/themes.xml 的黑底配色
        03
  • 主題樣式資源定義語法:同樣式資源

    <style 
        name="主題樣式資源ID"
        parent="@style/parent主題樣式資源ID">
        <item name="屬性名稱1">屬性值1</item>
        <item name="屬性名稱2">屬性值2</item>
        ...
    </style>
    
  • themes.xml 內的預設樣式資源

    <style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
    </style>
    

使用

AndroidManifest.xml

  • 開啟位於 app/manifestsAndroidManifest.xml
    04
  • 設定 Theme 資源:android:theme="@style/樣式資源ID",如:android:theme="@style/Theme.AppTheme"
    <application
        ...
        android:theme="@style/Theme.MyApp">
        ...
    </application>
    

MainActivity.kt

  • 開啟 MainActivity.kt
  • 設定 Theme 資源:setTheme(R.style.樣式資源ID),在程式
    內,以「_」取代樣式資源 ID 中的「.」,如:setTheme(R.style.Theme_MyApp)
    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            //======== 設定 Theme 資源 ========
            setTheme(R.style.Theme_MyApp)
            //================================
            setContentView(R.layout.activity_main)
        }
    }
    

上一篇
Android - Style Resources
下一篇
Android - 建立 Activity 的方式
系列文
Practice again& again.30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言