首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Android Theme 與 Style 詳解:主題樣式定制完全指南

     編輯:Java 相關知識

前言

Android 系統在 themes.xml 和 style.xml (\base\core\res\res\values\) 中預定義了大量主題與樣式。開發者應優先挑選合適的系統樣式繼承修改,而非從零編寫。

1. Theme(主題)—— 作用於 Window/Activity 級別

主題名含義與適用場景
Theme默認主題,不指定屬性時生效
Theme_NoDisplay不顯示任何內容,適用於無 UI 的後台 Activity
Theme_NoTitleBar無標題欄,默認黑色背景
Theme_NoTitleBar_Fullscreen無標題欄全屏,默認黑色背景
Theme_Black黑色背景默認主題
Theme_Black_NoTitleBar黑色背景無標題欄
Theme_Black_NoTitleBar_Fullscreen黑色背景無標題欄全屏
Theme_Light亮色背景默認主題
Theme_Light_NoTitleBar亮色背景無標題欄
Theme_Light_NoTitleBar_Fullscreen亮色背景無標題欄全屏
Theme_Dialog對話框風格,Activity 以彈窗形式展示
Theme_Panel純矩形面板,移除所有窗口裝飾
Theme_Light_Panel亮色版純面板
Theme_Wallpaper以壁紙為背景
Theme_Wallpaper_NoTitleBar壁紙背景無標題欄
Theme_Wallpaper_NoTitleBar_Fullscreen壁紙背景無標題欄全屏
Theme_Translucent半透明背景,顯示上一層畫面
Theme_Translucent_NoTitleBar半透明無標題欄
Theme_Translucent_NoTitleBar_Fullscreen半透明無標題欄全屏

2. Style(樣式)—— 作用於 View/Widget 級別

本質是將佈局 XML 中重複的屬性提取到樣式文件復用。

標準結構

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="TextStyle">
        <item name="android:textSize">14sp</item>
        <item name="android:textColor">#fff</item>
    </style>
</resources>

引用方式

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello, World!"
    style="@style/TextStyle" />

3. 樣式繼承機制

兩種實現方式:

  1. parent 屬性:<style name="TextTitle" parent="TextStyle">...</style>
  2. 點號命名法:<style name="TextStyle.TextTitle">...</style>(父樣式名.子樣式名)

實戰示例

<!-- 基礎文本樣式 -->
<style name="TextStyle">
    <item name="android:shadowDx">-0.5</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">0.5</item>
    <item name="android:singleLine">true</item>
    <item name="android:ellipsize">marquee</item>
</style>

<!-- 標題樣式繼承基礎樣式 -->
<style name="TextTitle" parent="TextStyle">
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">#fff</item>
    <item name="android:textStyle">bold</item>
</style>

優點:避免重複定義陰影、單行、溢出處理等通用屬性,維護性極強。點號法命名隨層級加深名稱變長,建議項目中統一規範使用 parent 屬性。

總結

善用系統 Theme 可快速實現無標題、全屏、對話框、透明等窗口效果;Style 抽離 View 共同屬性配合繼承機制,能大幅減少佈局代碼冗餘,提升 UI 一致性與可維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved