樣式是針對View的,比如TextView、Button等控制項,主題是針對Activity、整個APP的。 樣式、主題是多種屬性的集合,類似於網頁中的CSS樣式,可以讓設計與內容分離,並且可以繼承、復用,減少了代碼量,方便維護、統一管理。 樣式、主題都是在 res -> values -> styl ...
樣式是針對View的,比如TextView、Button等控制項,主題是針對Activity、整個APP的。
樣式、主題是多種屬性的集合,類似於網頁中的CSS樣式,可以讓設計與內容分離,並且可以繼承、復用,減少了代碼量,方便維護、統一管理。
樣式、主題都是在 res -> values -> styles.xml 中定義的:
1 <resources> 2 3 <!--這個是基礎主題,自帶的--> 4 <!-- Base application theme. --> 5 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 6 <!-- Customize your theme here. --> 7 <item name="colorPrimary">@color/colorPrimary</item> 8 <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 9 <item name="colorAccent">@color/colorAccent</item> 10 </style> 11 12 <!-- 一個style就是一個樣式/主題 --> 13 <style name="style1"> 14 <!-- 一個item表示一個屬性,屬性值不加引號 --> 15 <item name="android:layout_width">match_parent</item> 16 <item name="android:layout_height">wrap_content</item> 17 </style> 18 19 <!-- 樣式、主題可以繼承--> 20 <style name="style2" parent="style1"> 21 <item name="android:textColor">#FF0000</item> 22 <item name="android:textSize">20sp</item> 23 </style> 24 25 <!--所有自定義的主題都要繼承 Theme.AppCompat.Light.DarkActionBar(不會寫可以看最上面的那個style),以保證相容性 --> 26 <style name="theme" parent="Theme.AppCompat.Light.DarkActionBar"> 27 <item name="android:background">@drawable/a</item> 28 </style> 29 30 </resources>
然後就可以在佈局的xml文件的某個View中用style屬性引用樣式:
1 <TextView 2 style="@style/style1" 3 android:text="hello world!" />
在清單文件AndroidManifest.xml中使用theme屬性引用主題:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.myapplication"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:roundIcon="@mipmap/ic_launcher_round" 10 android:supportsRtl="true" 11 android:theme="@style/AppTheme"> <!-- 整個APP的主題--> 12 13 <activity 14 android:name=".MainActivity" 15 android:theme="@style/theme"> <!--這個Activity的主題 --> 16 <intent-filter> 17 <action android:name="android.intent.action.MAIN" /> 18 <category android:name="android.intent.category.LAUNCHER" /> 19 </intent-filter> 20 </activity> 21 22 </application> 23 24 </manifest>
如果背景圖片不能占滿該控制項/Activity,預設會自動填充鋪滿: