サーチ…


カスタムテーマをグローバルに使用する

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の使用

5.0
<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 )を使用すると、

2.1.x
<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+)

5.0

ユーザーがクリック可能なビューを押すとリップルアニメーションが表示されます。

あなたのビューで?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+)

5.0

この属性はナビゲーションバー(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アプリケーションで複数のテーマを使用すると、次のようにすべてのテーマにカスタム色を追加できます。

OneTheme TwoTheme

まず、次のようにstyle.xmlテーマを追加するstyle.xmlがあります。

<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">

</style>

<!--  -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >

</style>
......

あなたの上にはOneThemeTwoThemeがあります。

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.OneThemeR.style.ThreeTheme ....)に変更してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow