一個(gè)樣式相當(dāng)于多個(gè)屬性設(shè)置的集合怔接,其他 UI 組件通過 style 屬性來指定樣式境钟,這就相當(dāng)于把該樣式包含的所有屬性設(shè)置同時(shí)應(yīng)用于該 UI 組件瑞佩。
Android 的樣式資源文件放在 /res/values 目錄下,樣式資源文件的根元素是 <resources>,該元素可以包含多個(gè) <style> 子元素布蔗,每個(gè) <style> 定義一個(gè)樣式。<style> 可以指定如下兩個(gè)屬性:
- name:指定樣式的名稱浪腐。
- parent: 指定樣式所繼承的父樣式纵揍。
<style> 元素內(nèi)部可以包含多個(gè) <item> 元素,每個(gè) <item> 元素定義一個(gè)格式項(xiàng)议街。
下面是一個(gè)簡單的使用示例泽谨,首先是自定義的 Style 內(nèi)容,將它加在 /res/values 目錄下的 styles.xml 文件中:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="test_style01">
<item name="android:textSize">20sp</item>
<item name="android:textColor">@color/colorPrimaryDark</item>
</style>
<style name="test_style02" parent="@style/test_style01">
<item name="android:background">#EEEE66</item>
<item name="android:padding">8dp</item>
<item name="android:textColor">#000000</item>
</style>
</resources>
主布局文件的內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorGray"
android:orientation="vertical"
android:id="@+id/container"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/testStyle01"
style="@style/test_style01"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/testStyle02"
style="@style/test_style02"
/>
</LinearLayout>
主程序文件的代碼:
package com.toby.personal.testlistview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
final private static String TAG = "Toby_Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
程序的運(yùn)行效果:
參考文獻(xiàn):《瘋狂Android講義(第2版)》