พื้นฐาน android - theme and style

การสร้าง Style เบื้องต้น (สังเกตุสีที่มาร์คไว้ให้เอานะ)

/res/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="GreenText" parent="TextAppearance.AppCompat">
        <item name="android:textColor">#00FF00</item>
    </style>
</resources>


นำมาใช้กับ View (TextView)

/res/layout/activity_main.xml

<TextView
       android:id="@+id/greenText"
       style="@style/GreenText"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Hello World!"/>


Theme ของ App
( สังเกตุ Default Theme ที่เราใช้จะอยู่ใน  AndroidManifests.xml )

<application  android:theme="@style/AppTheme">   // ถูกเรียกใช้จาก  /res/values/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>

..
..
..

เราสามารถนำค่าสีมาใช้กับ View ใน Layout ต่อไป  เช่น  android:textColor="@color/colorPrimary"



ลำไปอีกขั้นกับการหนด style แบบเจาะจง
เวอร์ชั่น (API) ของมือถือ

res/values/styles.xml           # themes for all versions
res/values-v21/styles.xml    # themes for API level 21+ only


example : res/values-v21/styles.xml

 <!-- extend the base theme to add styles available only with API level 21+ -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
     <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>



ลองสร้าง Style ให้ TextView

<style name="GreenText" parent="TextAppearance.AppCompat">
    <item name="android:textColor">#77d</item> 
</style>


นำไปใช้ใน Activity

greenText.setOnClickListener {
    val intent = Intent(this@MainActivity, TwoActivity::class.java)
    startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this@MainActivity).toBundle())
}


เสร็จแล้วเราลองคลิกที่ Text จะเห็นความเปลี่ยนแปลงของ Animation
ตอน เปิด/ปิด Activity ใหม่ (สามารถใช้กับ Fragment ได้ด้วย)



Customize button style.

<Button
   style="@style/Widget.AppCompat.Button.Borderless"
   android:background="@color/colorPrimary"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="CustomButtonStyle"/>


source : https://developer.android.com/guide/topics/ui/look-and-feel/themes