รูปแบบและธีมใน Android ให้คุณแยกรายละเอียดการออกแบบแอปออกจาก UI โครงสร้างและลักษณะการทำงาน ซึ่งคล้ายกับสไตล์ชีตในการออกแบบเว็บ
สไตล์คือคอลเล็กชันของแอตทริบิวต์ที่ระบุลักษณะที่ปรากฏของรายการเดียว
View
รูปแบบสามารถระบุแอตทริบิวต์ได้
เช่น สีแบบอักษร ขนาดแบบอักษร สีพื้นหลัง และอื่นๆ อีกมากมาย
ธีมคือคอลเล็กชันแอตทริบิวต์ที่ใช้กับทั้งแอป กิจกรรม หรือข้อมูลพร็อพเพอร์ตี้ มุมมองต้นไม้ ไม่ใช่แค่มุมมองหนึ่งๆ เมื่อคุณใช้ธีม ทุกมุมมองในแอปหรือ กิจกรรมจะนำแอตทริบิวต์แต่ละรายการของธีมที่รองรับมาใช้ และยังนำรูปแบบไปใช้กับ องค์ประกอบที่ไม่ได้ดู เช่น แถบสถานะและพื้นหลังของหน้าต่าง
มีการประกาศรูปแบบและธีมใน
style resource file ใน
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
จากนั้นคุณจะสามารถลบล้าง
แอตทริบิวต์รูปแบบ [style] แล้วเพิ่มแอตทริบิวต์ใหม่
เช่น คุณสามารถรับช่วงลักษณะข้อความเริ่มต้นของแพลตฟอร์ม Android และแก้ไขในรูปแบบ ดังต่อไปนี้:
<style name="GreenText" parent="@android:style/TextAppearance"> <item name="android:textColor">#00FF00</item> </style>
อย่างไรก็ตาม คุณควรใช้รูปแบบแอปหลักจากไลบรารีการสนับสนุนของ Android เสมอ สไตล์ใน
ไลบรารีการสนับสนุนมีความเข้ากันได้โดยการเพิ่มประสิทธิภาพแต่ละรูปแบบสำหรับแอตทริบิวต์ 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
คลาส และข้อมูลพร็อพเพอร์ตี้จำนวนมากเพิ่มแอตทริบิวต์พิเศษของตนเอง ตัวอย่างเช่น พารามิเตอร์
แอตทริบิวต์ XML TextView
รายการ
มี
android:inputType
ที่คุณสามารถใช้กับมุมมองข้อความที่ได้รับอินพุต เช่น
วิดเจ็ต EditText
ใช้รูปแบบเป็นธีม
คุณสามารถสร้างธีมได้ด้วยวิธีเดียวกับที่คุณสร้างรูปแบบ ความแตกต่างจะอยู่ที่วิธีการใช้งาน ดังนี้
แทนที่จะใช้รูปแบบที่มีแอตทริบิวต์ style
ในมุมมอง ให้ใช้ธีมด้วย
แอตทริบิวต์ android:theme
ในแท็ก <application>
หรือแท็ก
<activity>
ในไฟล์ AndroidManifest.xml
ตัวอย่างเช่น ดูวิธีใช้ดีไซน์ Material ของไลบรารีการสนับสนุน 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
ลักษณะที่ปรากฏของข้อความ
ข้อจำกัดอย่างหนึ่งของรูปแบบคือคุณใช้ได้เพียงสไตล์เดียวกับ 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
Google ดูรายการแอตทริบิวต์ทั้งหมดได้ที่
TextAppearance
แอตทริบิวต์ TextView
ทั่วไปบางส่วนที่ไม่ได้รวมไว้ ได้แก่
lineHeight[Multiplier|Extra]
,
lines
,
breakStrategy
และ
hyphenationFrequency
TextAppearance
ทำงานที่ระดับอักขระ ไม่ใช่ระดับย่อหน้า ดังนั้น
ระบบไม่รองรับแอตทริบิวต์ที่ส่งผลต่อเลย์เอาต์ทั้งหมด
ปรับแต่งธีมเริ่มต้น
เมื่อคุณสร้างโปรเจ็กต์ด้วย Android Studio โปรเจ็กต์จะนำธีมดีไซน์ Material ไปใช้กับแอปโดย
ค่าเริ่มต้น ตามที่กำหนดไว้ในไฟล์ 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
เพื่อปรับปรุงประสบการณ์ของผู้ใช้ด้วย สีแบบไดนามิก และสีที่กำหนดเองเพิ่มเติม
เมื่อทราบสีแล้ว ให้อัปเดตค่าใน 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
ของlibrary
นอกจากนี้ยังมีธีมต่างๆ จากไลบรารีการสนับสนุนที่คุณอาจต้องการนำไปใช้
แทนรายการที่แสดงในตัวอย่างก่อนหน้านี้ ที่ที่ดีที่สุดในการดูธีมที่ใช้ได้คือ
เวลา
ไฟล์ themes.xml
ของlibrary
เพิ่มรูปแบบเฉพาะเวอร์ชัน
หาก 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: ต้องการใช้แอตทริบิวต์ธีม