2016-12-16 1 views
1

私のアプリでライブラリバージョンを更新しましたが、AlertDialogボタンのテキストの色は白です。その前に、私が正しく覚えていれば、それを指定するのはcolorAccentの属性でした。私は多くの異なる属性を試してきましたが、どれも動作していないようです。スタイルを使用したアラートダイアログのテキストの色

enter image description here

私の現在の警告ダイアログのスタイル::私のテーマのスタイルで

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorAccent">@color/website_main</item> 
    <item name="android:textColor">@color/website_main</item> 
</style> 

-

例写真右下のあなたはかなりinvisbleあるボタンを見ることができます

<item name="android:alertDialogStyle">@style/AlertDialogStyle</item> 

サポート/デザイン/ appcompatの最新バージョンI ' M使用は、次のとおりです。私はAlertDialogを作成する25.1.0

Javaコード:

android.support.v7.app.AlertDialog.Builder alertDialogBuilder = new android.support.v7.app.AlertDialog.Builder(activity); 
    alertDialogBuilder 
      .setCancelable(false) 
      .setPositiveButton(activity.getString(R.string.ok), new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        <UnrelatedLogic...> 
       } 
      }); 
    return alertDialogBuilder.show(); 

ここでは私もAlertDialogを使用していますListPreferenceを使用します。

android.support.v7.preference.ListPreference lang_preference = (android.support.v7.preference.ListPreference) findPreference("language_chooser"); 

任意の提案ですか?アクティビティ/アダプタでのスタイルの

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
     <item name="colorAccent">@color/teal</item> 
     <item name="android:textColorPrimary">@color/bg_3</item> 
     <item name="android:background">@color/bg_border</item> 
    </style> 

使用

AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.AppCompatAlertDialogStyle); 
+0

これはカスタムダイアログですか?ボタンテキストの色を設定するには、colorAccent属性を適用する必要があります。 – Programmer

+0

No.これは通常のアラートダイアログで、デフォルトの設定ダイアログでも発生します。 –

+0

このアラートダイアログを表示している場所でアクティビティコードを投稿できますか?その質問に答えるのに役立ちます。 – Programmer

答えて

4

それ多分you.Thisの使用は私enter image description here警告ダイアログスタイルですDialogボックスに含まれている子ビューではありません(ただし、これは必ずしもそうではありません)。 documentationから:あなたは、レイアウト内の単一Viewにスタイルを適用

、スタイルによって定義されたプロパティ はそのViewに適用されます。スタイルがViewGroupに適用されるスタイルが の場合、子のViewエレメントは スタイルプロパティを継承しません。 スタイルを直接適用するエレメントのみがそのプロパティを適用します。ただし、 のスタイルを適用して、すべてのViewエレメントに適用することができます。スタイルをテーマとして適用します。

したがって、スタイルをテーマとして適用する必要があります。またの属性が存在する:

<item name="android:alertDialogTheme">@style/AlertDialogStyle</item> 

最後に、textColor属性タイトルと本文テキストの色ではなく、ボタンのテキストの色を変更する必要があります。

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorAccent">@color/website_main</item> 
</style> 
+0

これは特定の解決策であるという問題があります。私の設定ダイアログでは、解決策がメインのアプリのテーマを変えなければならないように起こっています。 –

+0

この変更はDialogにのみ適用され、アプリ全体では適用されません。 –

+1

同じ問題があります。 –

1

それは少し混乱だが、alertDialogStyleがスタイルに意味される:

+0

あなたの答えをありがとうが、それは私のためには機能しません... –

+0

@DannyHambourg何か(もしあれば)?また、Androidのどのバージョンで実行していますか?最後に、 'android:alertDialogTheme'の代わりに' alertDialogTheme'を試してください。それはAppCompatと関係があります。 – Bryan

+0

アンドロイドを削除しました!ありがとう! –

関連する問題