รูปแบบและธีมใน Android ให้คุณแยกรายละเอียดการออกแบบแอปออกจากโครงสร้างและลักษณะการทำงานของ UI ซึ่งคล้ายกับสไตล์ชีตในการออกแบบเว็บ
สไตล์คือคอลเล็กชันของแอตทริบิวต์ที่ระบุลักษณะที่ปรากฏสำหรับ View
รายการเดียว สไตล์สามารถระบุคุณสมบัติ
เช่น สีแบบอักษร ขนาดแบบอักษร สีพื้นหลัง และอื่นๆ อีกมากมาย
ธีมคือคอลเล็กชันแอตทริบิวต์ที่ใช้กับแอป กิจกรรม หรือลำดับชั้นการดูทั้งหมด ไม่ใช่เพียงมุมมองเดียว เมื่อใช้ธีม ทุกมุมมองในแอปหรือกิจกรรมจะใช้แอตทริบิวต์ของแต่ละธีมที่ธีมนั้นรองรับ นอกจากนี้ยังนำรูปแบบไปใช้กับองค์ประกอบที่ไม่มีมุมมองได้ด้วย เช่น แถบสถานะและพื้นหลังของหน้าต่าง
ระบบจะประกาศรูปแบบและธีมในไฟล์ทรัพยากรรูปแบบใน res/values/
โดยปกติแล้วจะมีชื่อว่า styles.xml
ธีมกับสไตล์
ธีมและสไตล์มีความคล้ายคลึงกันหลายประการ แต่มีไว้เพื่อวัตถุประสงค์ที่แตกต่างกัน ธีมและสไตล์มีโครงสร้างพื้นฐานเหมือนกัน ซึ่งเป็นคู่คีย์-ค่าที่แมปแอตทริบิวต์กับทรัพยากร
style จะระบุแอตทริบิวต์สำหรับมุมมองประเภทหนึ่งๆ เช่น รูปแบบหนึ่งอาจระบุแอตทริบิวต์ของปุ่ม แอตทริบิวต์ทั้งหมดที่คุณระบุในสไตล์คือแอตทริบิวต์ที่คุณตั้งค่าได้ในไฟล์เลย์เอาต์ การสกัดแอตทริบิวต์ทั้งหมดไปยังรูปแบบช่วยให้คุณใช้และดูแลรักษาแอตทริบิวต์เหล่านั้นในวิดเจ็ตหลายรายการได้อย่างง่ายดาย
ธีมจะกำหนดคอลเล็กชันของทรัพยากรที่มีการตั้งชื่อ ซึ่งอ้างอิงได้ตามสไตล์ เลย์เอาต์ วิดเจ็ต และอื่นๆ ธีมจะกำหนดชื่อเชิงความหมาย เช่น colorPrimary
ให้กับทรัพยากร Android
สไตล์และธีมควรทำงานร่วมกัน ตัวอย่างเช่น คุณอาจมีรูปแบบที่ระบุว่าส่วนหนึ่งของปุ่มคือ colorPrimary
และอีกส่วนหนึ่งคือ colorSecondary
คุณจะดูคำจำกัดความจริงของสีเหล่านั้นได้ในธีม เมื่ออุปกรณ์เข้าสู่โหมดกลางคืน แอปจะเปลี่ยนจากธีม "สว่าง" เป็นธีม "มืด" ได้ ซึ่งจะเปลี่ยนค่าสำหรับชื่อทรัพยากรทั้งหมดเหล่านั้น คุณไม่จำเป็นต้องเปลี่ยนสไตล์ เนื่องจากสไตล์ใช้ชื่อเชิงความหมาย ไม่ใช่คำจำกัดความสีที่เฉพาะเจาะจง
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของธีมและสไตล์ร่วมกันได้ที่บล็อกโพสต์การจัดสไตล์ Android: ธีมกับสไตล์
สร้างและใช้สไตล์
หากต้องการสร้างสไตล์ใหม่ ให้เปิดไฟล์ res/values/styles.xml
ของโปรเจ็กต์ สําหรับสไตล์แต่ละแบบที่ต้องการสร้าง ให้ทําตามขั้นตอนต่อไปนี้
- เพิ่มองค์ประกอบ
<style>
ที่มีชื่อซึ่งระบุสไตล์นั้นๆ ได้อย่างไม่ซ้ำกัน - เพิ่มองค์ประกอบ
<item>
สำหรับแอตทริบิวต์รูปแบบแต่ละรายการที่ต้องการกำหนดname
ในแต่ละรายการจะระบุแอตทริบิวต์ที่คุณใช้เป็นแอตทริบิวต์ XML ในเลย์เอาต์ ค่าในองค์ประกอบ<item>
คือค่าสำหรับแอตทริบิวต์นั้น
ตัวอย่างเช่น สมมติว่าคุณกำหนดรูปแบบต่อไปนี้
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="GreenText" parent="TextAppearance.AppCompat"> <item name="android:textColor">#00FF00</item> </style> </resources>
คุณใช้สไตล์กับมุมมองได้โดยทำดังนี้
<TextView style="@style/GreenText" ... />
ระบบจะใช้แอตทริบิวต์แต่ละรายการที่ระบุไว้ในสไตล์กับมุมมองนั้นหากมุมมองยอมรับ มุมมองจะไม่สนใจแอตทริบิวต์ที่ไม่ยอมรับ
อย่างไรก็ตาม โดยทั่วไปแล้ว คุณจะใช้สไตล์เป็นธีมสำหรับทั้งแอป กิจกรรม หรือคอลเล็กชันของมุมมองแทนการใช้กับแต่ละมุมมอง ตามที่อธิบายไว้ในส่วนอื่นของคู่มือนี้
ขยายและปรับแต่งสไตล์
เมื่อสร้างสไตล์ของคุณเอง ให้ขยายสไตล์ที่มีอยู่จากเฟรมเวิร์กหรือคลังการสนับสนุนเสมอเพื่อให้เข้ากันได้กับสไตล์ UI ของแพลตฟอร์ม หากต้องการขยายรูปแบบ ให้ระบุรูปแบบที่ต้องการขยายด้วยแอตทริบิวต์ parent
จากนั้นคุณสามารถลบล้างแอตทริบิวต์สไตล์ที่รับค่ามาและเพิ่มแอตทริบิวต์ใหม่ได้
เช่น คุณสามารถรับค่าลักษณะที่ปรากฏของข้อความเริ่มต้นของแพลตฟอร์ม Android และแก้ไขได้ตามตัวอย่างต่อไปนี้
<style name="GreenText" parent="@android:style/TextAppearance"> <item name="android:textColor">#00FF00</item> </style>
อย่างไรก็ตาม ให้รับรูปแบบแอปหลักจาก Android Support Library เสมอ สไตล์ใน Support Library จะช่วยให้ใช้งานร่วมกันได้โดยการเพิ่มประสิทธิภาพแต่ละสไตล์สำหรับแอตทริบิวต์ UI ที่มีให้ใช้งานในแต่ละเวอร์ชัน สไตล์จากคลังการสนับสนุนมักจะมีชื่อคล้ายกับสไตล์จากแพลตฟอร์ม แต่จะมี AppCompat
อยู่ด้วย
หากต้องการรับค่ารูปแบบจากไลบรารีหรือโปรเจ็กต์ของคุณเอง ให้ประกาศชื่อสไตล์หลักโดยไม่มีส่วน @android:style/
ที่แสดงในตัวอย่างก่อนหน้านี้ ตัวอย่างเช่น ตัวอย่างต่อไปนี้รับรูปแบบลักษณะที่ปรากฏของข้อความมาจากไลบรารีการสนับสนุน
<style name="GreenText" parent="TextAppearance.AppCompat"> <item name="android:textColor">#00FF00</item> </style>
นอกจากนี้ คุณยังรับค่ารูปแบบ (ยกเว้นรูปแบบจากแพลตฟอร์ม) ได้โดยขยายชื่อรูปแบบด้วยเครื่องหมายจุดแทนการใช้แอตทริบิวต์ parent
กล่าวคือ ให้ใส่ชื่อสไตล์ที่ต้องการรับค่าต่อไว้หน้าชื่อสไตล์ของคุณ โดยคั่นด้วยเครื่องหมายจุด โดยปกติคุณจะทำเช่นนี้ก็ต่อเมื่อขยายสไตล์ของคุณเองเท่านั้น ไม่ใช่เมื่อขยายสไตล์จากไลบรารีอื่นๆ เช่น รูปแบบต่อไปนี้รับค่ารูปแบบทั้งหมดจาก GreenText
ในตัวอย่างก่อนหน้า แล้วเพิ่มขนาดข้อความ
<style name="GreenText.Large"> <item name="android:textSize">22dp</item> </style>
คุณสามารถรับค่ารูปแบบเช่นนี้ซ้ำได้หลายครั้งตามต้องการโดยต่อเชื่อมชื่อเพิ่มเติม
หากต้องการดูว่าแอตทริบิวต์ใดบ้างที่คุณประกาศได้ด้วยแท็ก <item>
โปรดดูตาราง "แอตทริบิวต์ XML" ในข้อมูลอ้างอิงคลาสต่างๆ มุมมองทั้งหมดรองรับแอตทริบิวต์ XML จากคลาส View
พื้นฐาน และมุมมองจํานวนมากจะเพิ่มแอตทริบิวต์พิเศษของตนเอง ตัวอย่างเช่น TextView
แอตทริบิวต์ XML ประกอบด้วยแอตทริบิวต์ android:inputType
ที่คุณสามารถใช้กับวิวข้อความที่รับอินพุต เช่น วิดเจ็ต EditText
ใช้สไตล์เป็นธีม
คุณสามารถสร้างธีมได้ด้วยวิธีเดียวกับที่คุณสร้างรูปแบบ ข้อแตกต่างคือวิธีใช้รูปแบบดังกล่าว
แทนการใช้รูปแบบที่มีแอตทริบิวต์ style
ในข้อมูลพร็อพเพอร์ตี้ คุณจะใช้ธีมที่มีแอตทริบิวต์ android:theme
ในแท็ก <application>
หรือแท็ก <activity>
ในไฟล์ AndroidManifest.xml
ตัวอย่างเช่น วิธีใช้ธีม "มืด" ของ Material Design ในคลังการสนับสนุนของ Android กับทั้งแอปมีดังนี้
<manifest ... > <application android:theme="@style/Theme.AppCompat" ... > </application> </manifest>
และนี่คือวิธีใช้ธีม "สว่าง" กับกิจกรรมเพียงกิจกรรมเดียว
<manifest ... > <application ... > <activity android:theme="@style/Theme.AppCompat.Light" ... > </activity> </application> </manifest>
มุมมองทั้งหมดในแอปหรือกิจกรรมจะใช้สไตล์ที่รองรับจากสไตล์ที่กําหนดไว้ในธีมนั้นๆ หากมุมมองรองรับเฉพาะแอตทริบิวต์บางรายการที่ประกาศไว้ในสไตล์ ระบบจะใช้เฉพาะแอตทริบิวต์เหล่านั้นและละเว้นแอตทริบิวต์ที่ไม่รองรับ
สำหรับ Android 5.0 (API ระดับ 21) และ Android Support Library v22.1 คุณจะระบุแอตทริบิวต์ android:theme
ไปยังมุมมองในไฟล์เลย์เอาต์ได้ด้วย การทำเช่นนี้จะแก้ไขธีมสำหรับมุมมองนั้นและมุมมองย่อยซึ่งมีประโยชน์สำหรับการเปลี่ยนจานสีของธีมในส่วนใดส่วนหนึ่งของอินเทอร์เฟซ
ตัวอย่างก่อนหน้านี้แสดงวิธีใช้ธีม เช่น Theme.AppCompat
ที่มาจาก Android Support Library อย่างไรก็ตาม โดยทั่วไปคุณควรปรับแต่งธีมให้เหมาะกับแบรนด์ของแอป วิธีที่ดีที่สุดคือขยายสไตล์เหล่านี้จากคลังการสนับสนุนและลบล้างแอตทริบิวต์บางส่วนตามที่อธิบายไว้ในส่วนต่อไปนี้
ลําดับชั้นของสไตล์
Android มีวิธีต่างๆ ในการกําหนดแอตทริบิวต์ในแอป Android เช่น คุณกําหนดแอตทริบิวต์ในเลย์เอาต์โดยตรง ใช้สไตล์กับมุมมอง ใช้ธีมกับเลย์เอาต์ และแม้แต่กําหนดแอตทริบิวต์แบบเป็นโปรแกรม
เมื่อเลือกวิธีจัดสไตล์แอป ให้คำนึงถึงลําดับชั้นของสไตล์ Android โดยทั่วไปแล้ว ให้ใช้ธีมและสไตล์ให้มากที่สุดเพื่อให้สอดคล้องกัน ถ้าคุณระบุแอตทริบิวต์เดียวกันในหลายที่ รายการต่อไปนี้จะเป็นตัวกำหนดว่าแอตทริบิวต์ใดที่จะนำมาใช้ในท้ายที่สุด โดยรายการจะเรียงลำดับจากความสำคัญสูงสุดไปยังต่ำสุด
- การใช้การจัดรูปแบบระดับอักขระหรือระดับย่อหน้าโดยใช้ช่วงข้อความกับคลาสที่มาจาก
TextView
- การใช้แอตทริบิวต์แบบเป็นโปรแกรม
- การใช้แอตทริบิวต์แต่ละรายการกับมุมมองโดยตรง
- การใช้รูปแบบกับข้อมูลพร็อพเพอร์ตี้
- การจัดรูปแบบเริ่มต้น
- การนำธีมไปใช้กับคอลเล็กชันของการดู กิจกรรม หรือทั้งแอป
- การใช้การจัดรูปแบบที่เจาะจงสำหรับบางมุมมอง เช่น การตั้งค่า
TextAppearance
ในTextView
TextAppearance
ข้อจำกัดอย่างหนึ่งของรูปแบบคือคุณใช้ได้เพียงสไตล์เดียวกับ View
อย่างไรก็ตาม ในTextView
คุณยังระบุแอตทริบิวต์TextAppearance
ที่ทํางานคล้ายกับสไตล์ได้ด้วย ดังที่แสดงในตัวอย่างต่อไปนี้
<TextView ... android:textAppearance="@android:style/TextAppearance.Material.Headline" android:text="This text is styled via textAppearance!" />
TextAppearance
ช่วยให้คุณกำหนดการจัดรูปแบบเฉพาะข้อความได้ในขณะที่ยังคงใช้สไตล์ของ View
กับการใช้งานอื่นๆ ได้ อย่างไรก็ตาม โปรดทราบว่าหากคุณกำหนดแอตทริบิวต์ข้อความใน View
หรือในสไตล์โดยตรง ค่าเหล่านั้นจะลบล้างค่า TextAppearance
TextAppearance
รองรับชุดย่อยของแอตทริบิวต์การจัดรูปแบบที่ TextView
มีให้ ดูรายการแอตทริบิวต์ทั้งหมดได้ในส่วน
TextAppearance
แอตทริบิวต์ TextView
ทั่วไปบางรายการที่ไม่ได้รวมอยู่มีดังนี้
lineHeight[Multiplier|Extra]
,
lines
,
breakStrategy
และ
hyphenationFrequency
TextAppearance
ทำงานที่ระดับอักขระ ไม่ใช่ระดับย่อหน้า ระบบจึงไม่รองรับแอตทริบิวต์ที่ส่งผลต่อเลย์เอาต์ทั้งหมด
ปรับแต่งธีมเริ่มต้น
เมื่อคุณสร้างโปรเจ็กต์ด้วย Android Studio ระบบจะใช้ธีม Material Design กับแอปโดยค่าเริ่มต้นตามที่ระบุไว้ในไฟล์ styles.xml
ของโปรเจ็กต์ สไตล์ AppTheme
นี้เป็นการขยายธีมจากไลบรารีการสนับสนุน รวมถึงการลบล้างแอตทริบิวต์สีที่ใช้โดยองค์ประกอบ UI หลัก เช่น แถบแอปและปุ่มการดำเนินการแบบลอย (หากมี) คุณจึงปรับแต่งการออกแบบสีของแอปได้อย่างรวดเร็วด้วยการอัปเดตสีที่ระบุ
เช่น ไฟล์ styles.xml
มีลักษณะดังนี้
<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>
ค่ารูปแบบอ้างอิงถึงทรัพยากรสีอื่นๆ ที่กำหนดไว้ในไฟล์ res/values/colors.xml
ของโปรเจ็กต์ ไฟล์ดังกล่าวคือไฟล์ที่คุณแก้ไขเพื่อเปลี่ยนสี
ดูภาพรวมสีของ Material Design เพื่อปรับปรุงประสบการณ์ของผู้ใช้ด้วยสีแบบไดนามิกและสีที่กำหนดเองเพิ่มเติม
เมื่อทราบสีแล้ว ให้อัปเดตค่าใน res/values/colors.xml
โดยทำดังนี้
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Color for the app bar and other primary UI elements. --> <color name="colorPrimary">#3F51B5</color> <!-- A darker variant of the primary color, used for the status bar (on Android 5.0+) and contextual app bars. --> <color name="colorPrimaryDark">#303F9F</color> <!-- a secondary color for controls like checkboxes and text fields. --> <color name="colorAccent">#FF4081</color> </resources>
จากนั้นคุณสามารถลบล้างสไตล์อื่นๆ ที่ต้องการ เช่น คุณเปลี่ยนสีพื้นหลังของกิจกรรมได้ดังนี้
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="android:windowBackground">@color/activityBackground</item> </style>
ดูรายการแอตทริบิวต์ที่คุณใช้ในธีมได้ในตารางแอตทริบิวต์ที่ R.styleable.Theme
เมื่อเพิ่มรูปแบบสำหรับมุมมองในเลย์เอาต์ คุณยังค้นหาแอตทริบิวต์ได้โดยดูที่ตาราง "แอตทริบิวต์ XML" ในการอ้างอิงคลาสการแสดงผล ตัวอย่างเช่น มุมมองทั้งหมดรองรับแอตทริบิวต์ XML จากView
คลาสพื้นฐาน
แอตทริบิวต์ส่วนใหญ่จะมีผลกับมุมมองบางประเภท และบางแอตทริบิวต์จะมีผลกับทุกมุมมอง อย่างไรก็ตาม แอตทริบิวต์ธีมบางรายการที่แสดงใน R.styleable.Theme
จะมีผลกับหน้าต่างกิจกรรม ไม่ใช่มุมมองในเลย์เอาต์ เช่น windowBackground
เปลี่ยนพื้นหลังของหน้าต่าง และ windowEnterTransition
กําหนดภาพเคลื่อนไหวการเปลี่ยนฉากที่จะใช้เมื่อกิจกรรมเริ่มต้น โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อเริ่มกิจกรรมโดยใช้ภาพเคลื่อนไหว
ไลบรารีการสนับสนุนของ Android ยังมีแอตทริบิวต์อื่นๆ ที่คุณสามารถใช้เพื่อปรับแต่งธีมซึ่งขยายมาจาก Theme.AppCompat
เช่น แอตทริบิวต์ colorPrimary
ที่แสดงในตัวอย่างก่อนหน้านี้ ไฟล์เหล่านี้เหมาะสําหรับดูในไฟล์ attrs.xml
ของคลัง
นอกจากนี้ ยังมีธีมอื่นๆ จากคลังการสนับสนุนที่คุณอาจต้องการขยายการใช้งานแทนธีมที่แสดงในตัวอย่างก่อนหน้านี้ แหล่งที่ดีที่สุดในการดูธีมที่ใช้ได้มีไฟล์ themes.xml
ของไลบรารี
เพิ่มรูปแบบเฉพาะเวอร์ชัน
หาก Android เวอร์ชันใหม่เพิ่มแอตทริบิวต์ธีมที่ต้องการใช้ คุณสามารถเพิ่มแอตทริบิวต์ดังกล่าวลงในธีมได้ในขณะที่ยังคงใช้งานร่วมกับเวอร์ชันเก่าได้ สิ่งที่ต้องมีคือไฟล์ styles.xml
ไฟล์อื่นที่บันทึกไว้ในไดเรกทอรี values
ซึ่งมีตัวระบุเวอร์ชันทรัพยากร ดังนี้
res/values/styles.xml # themes for all versions res/values-v21/styles.xml # themes for API level 21+ only
เนื่องจากรูปแบบในไฟล์ values/styles.xml
ใช้ได้กับทุกเวอร์ชัน ธีมของคุณใน values-v21/styles.xml
จึงรับรูปแบบเหล่านั้นได้ ซึ่งหมายความว่าคุณจะหลีกเลี่ยงการใช้สไตล์ซ้ำได้โดยเริ่มจากธีม "พื้นฐาน" แล้วขยายธีมนั้นในสไตล์สำหรับเวอร์ชันที่เฉพาะเจาะจง
เช่น หากต้องการประกาศการเปลี่ยนเฟรมของหน้าต่างสำหรับ Android 5.0 (API ระดับ 21) ขึ้นไป คุณต้องใช้แอตทริบิวต์ใหม่ ดังนั้นธีมพื้นฐานใน res/values/styles.xml
จึงอาจมีลักษณะดังนี้
<resources> <!-- Base set of styles that apply to all versions. --> <style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/primaryColor</item> <item name="colorPrimaryDark">@color/primaryTextColor</item> <item name="colorAccent">@color/secondaryColor</item> </style> <!-- Declare the theme name that's actually applied in the manifest file. --> <style name="AppTheme" parent="BaseAppTheme" /> </resources>
จากนั้นเพิ่มสไตล์สำหรับเวอร์ชันที่เฉพาะเจาะจงใน res/values-v21/styles.xml
ดังนี้
<resources> <!-- extend the base theme to add styles available only with API level 21+ --> <style name="AppTheme" parent="BaseAppTheme"> <item name="android:windowActivityTransitions">true</item> <item name="android:windowEnterTransition">@android:transition/slide_right</item> <item name="android:windowExitTransition">@android:transition/slide_left</item> </style> </resources>
ตอนนี้คุณใช้ AppTheme
ในไฟล์ Manifest ได้ และระบบจะเลือกสไตล์ที่ใช้ได้สำหรับระบบแต่ละเวอร์ชัน
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ทรัพยากรอื่นสำหรับอุปกรณ์ต่างๆ ได้ที่การระบุทรัพยากรอื่น
กำหนดค่ารูปแบบวิดเจ็ต
วิดเจ็ตทุกรายการในเฟรมเวิร์กและคลังการสนับสนุนมีรูปแบบเริ่มต้น เช่น เมื่อคุณจัดสไตล์แอปโดยใช้ธีมจากคลังการสนับสนุน ระบบจะจัดสไตล์อินสแตนซ์ของ Button
โดยใช้สไตล์ Widget.AppCompat.Button
หากต้องการใช้สไตล์วิดเจ็ตอื่นกับปุ่ม ให้ใช้แอตทริบิวต์ style
ในไฟล์เลย์เอาต์ ตัวอย่างต่อไปนี้ใช้รูปแบบปุ่มที่ไม่มีขอบของไลบรารี
<Button style="@style/Widget.AppCompat.Button.Borderless" ... />
หากต้องการใช้รูปแบบนี้กับปุ่มทั้งหมด ให้ประกาศรูปแบบดังกล่าวใน buttonStyle
ของธีมได้ดังนี้
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless</item> ... </style>
นอกจากนี้ คุณยังขยายสไตล์วิดเจ็ตได้เช่นเดียวกับการขยายสไตล์อื่นๆ แล้วนำไปใช้กับสไตล์วิดเจ็ตที่กำหนดเองในเลย์เอาต์หรือธีม
แหล่งข้อมูลเพิ่มเติม
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับธีมและสไตล์ โปรดดูแหล่งข้อมูลเพิ่มเติมต่อไปนี้
บล็อกโพสต์
- การจัดรูปแบบ Android: ธีมเทียบกับสไตล์
- การจัดสไตล์ Android: แอตทริบิวต์ธีมทั่วไป
- การจัดสไตล์ Android: แนะนำให้ใช้แอตทริบิวต์ธีม