รูปแบบและธีม

ลองใช้วิธีการเขียน
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนำสำหรับ Android ดูวิธีใช้งานการกำหนดธีมใน Compose

รูปแบบและธีมใน Android ให้คุณแยกรายละเอียดการออกแบบแอปออกจาก UI โครงสร้างและลักษณะการทำงาน ซึ่งคล้ายกับสไตล์ชีตในการออกแบบเว็บ

สไตล์คือคอลเล็กชันของแอตทริบิวต์ที่ระบุลักษณะที่ปรากฏของรายการเดียว View รูปแบบสามารถระบุแอตทริบิวต์ได้ เช่น สีแบบอักษร ขนาดแบบอักษร สีพื้นหลัง และอื่นๆ อีกมากมาย

ธีมคือคอลเล็กชันแอตทริบิวต์ที่ใช้กับทั้งแอป กิจกรรม หรือข้อมูลพร็อพเพอร์ตี้ มุมมองต้นไม้ ไม่ใช่แค่มุมมองหนึ่งๆ เมื่อคุณใช้ธีม ทุกมุมมองในแอปหรือ กิจกรรมจะนำแอตทริบิวต์แต่ละรายการของธีมที่รองรับมาใช้ และยังนำรูปแบบไปใช้กับ องค์ประกอบที่ไม่ได้ดู เช่น แถบสถานะและพื้นหลังของหน้าต่าง

มีการประกาศรูปแบบและธีมใน style resource file ใน res/values/ โดยปกติแล้วจะมีชื่อว่า styles.xml

รูปที่ 1 กิจกรรมเดียวกันมี 2 ธีม ดังนี้ Theme.AppCompat (ซ้าย) และ Theme.AppCompat.Light (ขวา)

ธีมกับสไตล์

ธีมและสไตล์มีความคล้ายคลึงกันมาก แต่มีการนำไปใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน ธีมและ มีโครงสร้างพื้นฐานเหมือนกัน คือคู่คีย์-ค่าที่แมปแอตทริบิวต์ แหล่งข้อมูล

style จะระบุแอตทริบิวต์สำหรับประเภทมุมมองหนึ่งๆ โดยเฉพาะ เช่น สไตล์หนึ่งอาจเป็น ระบุแอตทริบิวต์ของปุ่ม แอตทริบิวต์ทั้งหมดที่คุณระบุในรูปแบบคือแอตทริบิวต์ที่คุณสามารถตั้งค่า ไฟล์เลย์เอาต์ การแยกแอตทริบิวต์ทั้งหมดเป็นรูปแบบช่วยให้ใช้งานและดูแลรักษาได้ง่าย ในหลายวิดเจ็ต

ธีมจะกำหนดคอลเล็กชันของทรัพยากรที่มีชื่อ ซึ่งสามารถอ้างอิงด้วยรูปแบบ เลย์เอาต์ วิดเจ็ต และอื่นๆ ธีมจะกำหนดชื่อเชิงความหมาย เช่น colorPrimary ให้ Android ที่ไม่ซับซ้อน

สไตล์และธีมควรทำงานร่วมกัน ตัวอย่างเช่น คุณอาจมีสไตล์ที่ระบุ ส่วนของปุ่มคือ colorPrimary และอีกส่วนหนึ่งคือ colorSecondary คำจำกัดความที่แท้จริงของสีดังกล่าวจะแสดงอยู่ในธีม วันและเวลา อุปกรณ์จะเข้าสู่โหมดกลางคืน แอปของคุณเปลี่ยนจาก "แสง" ได้ เปลี่ยนเป็น "สีเข้ม" ธีม เปลี่ยนค่าของชื่อทรัพยากรทั้งหมด คุณไม่จำเป็นต้องเปลี่ยนแปลงรูปแบบ เนื่องจาก จะใช้ชื่อความหมาย ไม่ใช่คำนิยามของสี

ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานร่วมกันของธีมและรูปแบบต่างๆ ได้ที่บล็อกโพสต์ การจัดรูปแบบ Android: ธีมเทียบกับสไตล์

สร้างและใช้รูปแบบ

หากต้องการสร้างรูปแบบใหม่ ให้เปิดไฟล์ res/values/styles.xml ของโปรเจ็กต์ สำหรับ แต่ละสไตล์ที่ต้องการสร้าง ให้ทำตามขั้นตอนต่อไปนี้

  1. เพิ่มองค์ประกอบ <style> โดยใช้ชื่อที่ระบุรูปแบบไม่ซ้ำกัน
  2. เพิ่มองค์ประกอบ <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 โดยทั่วไป ให้ใช้ ธีมและสไตล์ให้มากที่สุดเพื่อความสอดคล้อง หากคุณระบุแอตทริบิวต์เดียวกันใน หลายๆ ตำแหน่ง รายการต่อไปนี้จะเป็นตัวกำหนดว่าแอตทริบิวต์ใดที่จะนำมาใช้ในท้ายที่สุด รายการคือ เรียงลำดับจากความสำคัญสูงสุดไปยังต่ำสุด

  1. การใช้การจัดรูปแบบระดับอักขระหรือย่อหน้าโดยใช้ช่วงข้อความเพื่อให้ได้ TextView ใหม่
  2. การใช้แอตทริบิวต์แบบเป็นโปรแกรม
  3. การใช้แอตทริบิวต์แต่ละรายการกับข้อมูลพร็อพเพอร์ตี้โดยตรง
  4. การนำรูปแบบไปใช้กับข้อมูลพร็อพเพอร์ตี้
  5. การจัดรูปแบบเริ่มต้น
  6. การนำธีมไปใช้กับคอลเล็กชันของการดู กิจกรรม หรือทั้งแอป
  7. ใช้การจัดรูปแบบเฉพาะมุมมองบางอย่าง เช่น การตั้งค่า TextAppearance ใน TextView

รูปที่ 2 การจัดรูปแบบจาก span จะลบล้างการจัดรูปแบบจาก 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 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>

คุณยังสามารถขยายรูปแบบวิดเจ็ตได้เช่นเดียวกับการขยายรูปแบบอื่นๆ แล้วใช้รูปแบบวิดเจ็ตที่กำหนดเองในการจัดวางหรือธีม

แหล่งข้อมูลเพิ่มเติม

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับธีมและสไตล์ โปรดดูแหล่งข้อมูลเพิ่มเติมต่อไปนี้

บล็อกโพสต์