web-dev-qa-db-ja.com

Android v21 Theme.Appcompat色アクセントは無視され、ダイアログにパディングはありません

Android 5 SDK)からActionBarActivityを使用しています。これはv21のtheme.xmlです

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="Android:colorPrimary">@color/abc1</item>
    <item name="Android:colorPrimaryDark">@color/abc2</item>
    <item name="Android:colorAccent">@color/abc3</item>
</style>

しかし、色は無視され、デフォルトの青緑色に置き換えられ、すべてのダイアログはパディングなしで表示されます。

問題http://i62.tinypic.com/21cebcz.png

また、カスタムトーストなどの他の場所でもパディングは無視されます。問題はLollipopデバイスでのみ発生します。

編集:

パディングの問題はfitsSystemWindowが原因でした。
この質問。

しかし、アクセント色の問題は依然として存在し、ダイアログだけでなくアプリ全体に影響します。

51
k1slay

アクセントカラーについて。 AppCompatテーマを使用しているため、テーマ内のネームスペースからAndroidを削除する必要があります。

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/abc1</item>
    <item name="colorPrimaryDark">@color/abc2</item>
    <item name="colorAccent">@color/abc3</item>
</style>

ダイアログについて。 AppCompatはサポートしていません(私が知っているように)。
values-v21フォルダーでこのスタイルを使用できます。

<style name="Theme" parent="FrameworkRoot.Theme">
    <item name="Android:alertDialogTheme">@style/Theme.AlertDialog</item>
</style>

<style name="Theme.AlertDialog" parent="Android:Theme.Material.Light.Dialog.Alert">
    <item name="Android:colorPrimary">@color/demo_primary_color</item>
    <item name="Android:colorPrimaryDark">@color/demo_colorPrimaryDark</item>
    <item name="Android:colorAccent">@color/theme_accent_1</item>
</style>

2015年4月23日更新:サポートライブラリV.22.1

新しい support library v22.1はダイアログで動作します。 Android.support.v7.app.AlertDialog または新しい AppCompatDialog を使用できます。

例えば:

import Android.support.v7.app.AlertDialog

AlertDialog.Builder builder =
       new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
            builder.setTitle("Dialog");
            builder.setMessage("Lorem ipsum dolor ....");
            builder.setPositiveButton("OK", null);
            builder.setNegativeButton("Cancel", null);
            builder.show();

そして、次のようなスタイルを使用します。

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorAccent">#FFCC00</item>
    <item name="Android:textColorPrimary">#FFFFFF</item>
    <item name="Android:background">#5fa3d0</item>
</style>

それ以外の場合は、現在のテーマで定義できます。

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- your style -->
    <item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>

そしてあなたのコードで:

 import Android.support.v7.app.AlertDialog

    AlertDialog.Builder builder =
           new AlertDialog.Builder(this);
125

更新

AppCompatダイアログのテーマに色を適用しました。誰かに役立つかもしれません:

values/style.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">

...

/* for Android 4 - 4.4, we not define alert dialogs style */

</style>

values-v21/style.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">

...

/* define alert dialog style for Android 5 */
<item name="Android:alertDialogTheme">@style/Theme.AlertDialog</item>

</style>
 <style name="Theme.AlertDialog" parent="Theme.AppCompat.Light.Dialog">

    <!--app abar color in Activties Task manager -->
    <item name="colorPrimary">@color/my_color</item>

    <!--copy/paste colors -->
    <item name="colorAccent">@color/my_color</item>

    <!--status bar color -->
    <item name="colorPrimaryDark">@color/my_color</item>


</style>
22

AppCompatの現在のバージョンは、AlertDialogsに色付けを適用しません。

https://github.com/afollestad/material-dialogs を使用してみてください、うまくいきます!

8
AlexKorovyansky