Tema, gaya dan atribut

Android memiliki gaya dan tema yang memungkinkan Anda menyusun pengembangan antarmuka pengguna.





Mereka terdiri dari atribut yang menentukan desain elemen. Atribut dapat dibuat atau atribut yang sudah ada dapat digunakan. Atribut dapat diberi nilai, jenis yang ditentukan saat dibuat.





Contoh deklarasi atribut dari Android SDK:





<attr name="background" format="reference|color" />







catatan:

Referensi ke atribut lain melalui @[package:]type/name



struktur juga merupakan tipe.





Tema vs gaya

Tema dan gayanya sangat mirip, tetapi digunakan untuk tujuan yang berbeda.





Gaya menggabungkan atribut untuk widget tertentu. Dengan mengekstrak atribut ke gaya, atribut tersebut dapat dengan mudah digunakan dan dikelola di beberapa widget secara bersamaan.





Tema, pada gilirannya, mendefinisikan sekumpulan atribut yang bisa dirujuk dalam aplikasi.





Gaya dan tema dirancang untuk bekerja sama.





Misalnya, kami memiliki gaya dengan latar belakang tombol colorPrimary



dan warna teks colorSecondary



. Arti sebenarnya dari warna-warna ini diberikan dalam topik.





<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
		<style name="LightTheme" parent="YourAppTheme">
				<item name="colorPrimary">#FFFFFF</item>
				<item name="colorSecondary">#000000</item>
		</style>

		<style name="DarkTheme" parent="YourAppTheme">
				<item name="colorPrimary">#000000</item>
				<item name="colorSecondary">#FFFFFF</item>
		</style>

		<style name="Button.Primary" parent="Widget.MaterialComponents.Button">
				<item name="android:background">?attr/colorPrimary</item>
				<item name="android:textColor">?attr/colorSecondary</item>
		</style>
</resources>
      
      



Saat perangkat masuk ke mode malam, aplikasi dapat beralih dari tema "terang" ke "gelap" dengan mengubah nilai sumber daya ini.





Tidak perlu mengubah gaya, karena gaya menggunakan nama semantik daripada sumber daya warna tertentu.





Jenis tautan dalam XML

Atribut android:background



dapat mengambil beberapa jenis:





android:background="@color/colorPrimary"
android:background="?attr/colorPrimary"
      
      



@color/colorPrimary



- c colorPrimary



, <color name="colorPrimary">#FFFFFF<color>



, res/values/color.xml



.





:

- , , Β«nameΒ», XML-. , XML- <resources>



, .





, ?attr



- .





?attr/colorPrimary



  colorPrimary



, :





<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
		<style name="YourAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
				<item name="colorPrimary">@color/colorPrimary</item>
		</style>
</resources>
      
      



?attr



, .





, .









, , , .





@[package:]type/name







  1. package



    - () , . - , .





  2. type



    - color



    , string



    , dimen



    , layout



    - . .





  3. name



    - , .





?[package:]type/name







  1. package



    - () , . - , .





  2. type



    - () attr



    ?



    .





  3. name



    - , .





? vs ?attr vs ?android:attr

, , ?android:attr/colorPrimary



, ?attr/colorPrimary



, ?colorPrimary



.





, Android SDK, android



, .





?



?attr



, (, AppCompat MaterialDesign), , .





Android SDK, , colorPrimary



.





, API.





Google Android :





  1. Theming with AppCompat





  2. Android styling: themes vs styles





  3. What’s your text’s appearance?





  4. Android Styling: themes overlay





  5. Android Styling: prefer theme attributes





  6. Gaya Android: atribut tema umum





Saya tetap merekomendasikan menonton video dari Android Dev Summit



2019. Tautan ke video








All Articles