私はAppCompat DialogFragmentsのTEXTの色を変更するのに苦労しています。AppCompatDialog:テキストの色を変更することができません
My AppはDARKテーマ(Theme.AppCompat.NoActionBar
)を使用しますが、ダイアログではLIGHTテーマが必要です。私は、ビルドツール、サポートライブラリ、およびcompileSdkVersionを25に使用しています。それは重要です。
のダイアログで他のすべてを変更することはできますが、暗いテーマには(白い)設定を使用し続けるプライマリおよびアクセント付きのテキストカラーではありません、白白い背景の上にテキスト。
私は好きなので、ここで同様の質問でのソリューションの数十を試してみた:
1)簡単な1:のstyles.xmlオン:このソリューションでは
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
<item name="android:alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- ignored !!!! -->
<item name="colorPrimary">#ff0000</item>
<!-- ignored !!!! -->
<item name="colorPrimaryDark">#ff0000</item>
<!-- ignored !!!! -->
<item name="colorAccent">#ff0000</item>
<!-- ignored !!!! -->
<item name="android:textColorPrimary">#F040FF</item>
<!-- ignored !!!! -->
<item name="android:textColor">#F040FF</item>
</style>
、
:あなたはスクリーンショットで見ることができるようAppCompat.Light.Dialog.Alert
から背景やボタンのスタイルは、テキストの色適用されるが、ではありません
2)手動AlertDialog作成にスタイルを指定する:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppCompatAlertDialogStyle);
LayoutInflater inflater = getActivity().getLayoutInflater();
View hostView = mHostView = inflater.inflate(layoutId, null);
同じ問題。ライト背景、ライトテキスト。 ContextWrapper使用
3):同じことが起こる:(
ContextThemeWrapper ctw = new ContextThemeWrapper(getActivity(), R.style.AppCompatAlertDialogStyle);
AlertDialog.Builder builder = new AlertDialog.Builder(ctw);
何も
4)手動
のように私はここにSOの多くの記事に出くわした他のエキゾチックな定数を指定しますTheme_DeviceDefault_Light_Dialog_Alert
THEME_DEVICE_DEFAULT_LIGHT
これはちょっとした試みでしたが、とにかくテキスト
5に変更されていない)フラグメントにスタイルを指定するのではなく、ダイアログ上の
Dialog_Meta newFragment = new Dialog_Meta();
newFragment.setStyle(DialogFragment.STYLE_NORMAL, R.style.AppCompatAlertDialogStyle);
newFragment.show(fragmentManager, TAG);
私は、非常に古いAPIバージョンで時間前にこのソリューションを使用し、問題だったか覚えていないことができますしかし、とにかく、現在の問題を解決しません:(
誰が私に何が起こっているか教えていただけますか?
「android.support.v7.app.AlertDialog'は、android.app.AlertDialog'ではなく、使用していますか? –
チップをありがとう。はい、私はv7.app.AlertDialogを使用しています! – rupps
ああ、私は理由が分かると思う。 'AlertDialog'に独自の' View'を設定しているので、テーマは 'View'には適用されません。カフを外して#2と#3を組み合わせ、 'getActivity()。getLayoutInflater()'の代わりに 'LayoutInflater.from()'を 'ContextThemeWrapper'にすることができます。 –