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

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

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

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

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

รูปแบบและธีมจะประกาศในไฟล์ทรัพยากรรูปแบบใน 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 จากนั้นคุณสามารถลบล้างแอตทริบิวต์สไตล์ที่รับค่ามาและเพิ่มแอตทริบิวต์ใหม่ได้

เช่น คุณสามารถรับค่าลักษณะที่ปรากฏของข้อความเริ่มต้นของแพลตฟอร์ม 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 Design ในคลังการสนับสนุนของ Android กับทั้งแอปมีดังนี้

<manifest ... >
    <application android:theme="@style/Theme.AppCompat" ... >
    </application>
</manifest>

และวิธีใช้ธีม "light" กับกิจกรรมเดียวมีดังนี้

<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

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 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 ของlibrary

นอกจากนี้ ยังมีธีมอื่นๆ จากคลังการสนับสนุนที่คุณอาจต้องการขยายการใช้งานแทนธีมที่แสดงในตัวอย่างก่อนหน้านี้ แหล่งที่ดีที่สุดในการดูธีมที่ใช้ได้มีไฟล์ 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>

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

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

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

บล็อกโพสต์