テーマ、スタイル、属性

Androidには、ユーザーインターフェイスの開発を構造化できるスタイルとテーマがあります。





これらは、要素の設計を定義する属性で構成されています。属性を作成することも、既存の属性を使用することもできます。属性には値を割り当てることができ、そのタイプは作成時に指定されます。





Android SDKからの属性宣言の例:





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







注意:

@[package:]type/name



構造体を介した別の属性への参照もタイプです。





テーマとスタイル

テーマとスタイルは非常に似ていますが、異なる目的で使用されます。





このスタイルは、特定のウィジェットの属性を組み合わせたものです。スタイルの属性を抽出することで、複数のウィジェットで同時に簡単に使用および保守できます。





次に、テーマは、アプリケーションで参照できる属性のセットを定義します。





スタイルとテーマは連携して機能するように設計されています。





たとえば、ボタンの背景がcolorPrimary



で、テキストの色がであるスタイルがありますcolorSecondary



これらの色の実際の意味は、トピックに記載されています。





<?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>
      
      



デバイスがナイトモードに入ると、アプリケーションはこれらのリソースの値を変更することで、「明るい」テーマから「暗い」テーマに切り替えることができます。





スタイルは特定のカラーリソースではなくセマンティック名を使用するため、スタイルを変更する必要はありません。





XMLのリンクタイプ

属性にandroid:background



はいくつかのタイプがあります。





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. Androidのスタイリング:一般的なテーマの属性





私はまだAndroid Dev Summit



2019年からのビデオを見ることをお勧めします。ビデオへのリンク








All Articles