Android
テーマ、スタイル、属性
サーチ…
カスタムテーマをグローバルに使用する
themes.xml:
<style name="AppTheme" parent="Theme.AppCompat">
<!-- Theme attributes here -->
</style>
AndroidManifest.xmlの場合:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- Activity declarations here -->
</application>
主な、暗い、アクセントの色を定義する
テーマのカラーパレットをカスタマイズできます。
フレームワーク APIの使用
<style name="AppTheme" parent="Theme.Material">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:colorAccent">@color/accent</item>
</style>
Appcompatサポートライブラリ (およびAppCompatActivity
)を使用すると、
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
アクティビティごとにカスタムテーマを使用する
themes.xml:
<style name="MyActivityTheme" parent="Theme.AppCompat">
<!-- Theme attributes here -->
</style>
AndroidManifest.xmlの場合:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat">
<activity
android:name=".MyActivity"
android:theme="@style/MyActivityTheme" />
</application>
オーバーカラーカラー(API 21+)
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorEdgeEffect">@color/my_color</item>
</style>
リップルカラー(API 21+)
ユーザーがクリック可能なビューを押すとリップルアニメーションが表示されます。
あなたのビューで?android:colorControlHighlight
割り当てるアプリケーションで使用されているのと同じリップルカラーを使用することができます。テーマのandroid:colorControlHighlight
属性を変更することで、この色をカスタマイズできます:
このエフェクトの色は変更できます:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorControlHighlight">@color/my_color</item>
</style>
または、マテリアルテーマを使用している場合:
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorControlHighlight">@color/your_custom_color</item>
</style>
ライトステータスバー(API 23+)
この属性は、ステータスバーアイコンの背景(画面の上部)を白に変更することができます。
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowLightStatusBar">true</item>
</style>
半透明ナビゲーションとステータスバー(API 19+)
ナビゲーションバー(画面の下部にある)は透明にすることができます。ここでそれを達成する方法があります。
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentNavigation">true</item>
</style>
この属性をスタイルに適用すると、ステータスバー(画面の一番上)を透明にすることができます:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentStatus">true</item>
</style>
ナビゲーションバーの色(API 21+)
この属性はナビゲーションバー(Back、Home Recentボタンを含むもの)を変更するために使用されます。通常は黒ですが、色は変更できます。
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:navigationBarColor">@color/my_color</item>
</style>
テーマの継承
テーマを定義するときには、通常、システムによって提供されるテーマを使用して、変更が自分のアプリケーションに合わせて外観を変更します。たとえば、これはTheme.AppCompat
テーマが継承される方法です。
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
このテーマは、明示的に変更されたものを除いて、標準のTheme.AppCompat
テーマのすべてのプロパティを持つようになりました。
継承時にはショートカットもあり、通常は自分のテーマから継承するときに使用されます。
<style name="AppTheme.Red">
<item name="colorAccent">@color/red</item>
</style>
それは既にAppTheme.
持っているからAppTheme.
その名前の始めに、 parent
テーマを定義する必要はなく、自動的に継承されます。これは、アプリの一部(たとえば、単一のアクティビティ)に特定のスタイルを作成する必要がある場合に便利です。
1つのアプリケーションの複数のテーマ
Androidアプリケーションで複数のテーマを使用すると、次のようにすべてのテーマにカスタム色を追加できます。
まず、次のようにstyle.xml
テーマを追加するstyle.xml
があります。
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<!-- -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
</style>
......
あなたの上にはOneThemeとTwoThemeがあります。
AndroidManifest.xml
に移動して、 android:theme="@style/OneTheme"
をアプリケーションタグに追加すると、 OneThemeがデフォルトのテーマになります:
<application
android:theme="@style/OneTheme"
...>
attrs.xml
という名前の新しいxmlファイルを作成し、次のコードを追加します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="custom_red" format="color" />
<attr name="custom_blue" format="color" />
<attr name="custom_green" format="color" />
</resources>
<!-- add all colors you need (just color's name) -->
style.xml
戻って、各テーマの値とともにこれらの色を追加します。
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="custom_red">#8b030c</item>
<item name="custom_blue">#0f1b8b</item>
<item name="custom_green">#1c7806</item>
</style>
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
<item name="custom_red">#ff606b</item>
<item name="custom_blue">#99cfff</item>
<item name="custom_green">#62e642</item>
</style>
各テーマのカスタムカラーを作成しました。このカラーをビューに追加しましょう。
"?attr /"を使用してTextViewにcustom_blue色を追加します。
あなたのimageViewに移動し、この色を追加してください:
<TextView>
android:id="@+id/txte_view"
android:textColor="?attr/custom_blue" />
私たちは単一行setTheme(R.style.TwoTheme);
だけでテーマを変更することができsetTheme(R.style.TwoTheme);
この行は、このActivity.java
ように、 onCreate()
メソッドのsetContentView()
メソッドの前にある必要があります。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.TwoTheme);
setContentView(R.layout.main_activity);
....
}
すべてのアクティビティのテーマを一度に変更する
すべてのアクティビティのテーマを変更する場合は、MyActivityという名前の新しいクラスを作成してAppCompatActivity
クラス(またはActivity
クラス)をsetTheme(R.style.TwoTheme);
行を追加するsetTheme(R.style.TwoTheme);
onCreate()メソッドに:
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (new MySettings(this).isDarkTheme())
setTheme(R.style.TwoTheme);
}
}
最後に、すべてのアクティビティに移動して、すべてをMyActivityベースクラスを拡張します 。
public class MainActivity extends MyActivity {
....
}
テーマを変更するには、 MyActivityに行き、 R.style.TwoTheme
をあなたのテーマ( R.style.OneTheme
、 R.style.ThreeTheme
....)に変更してください。