2016-07-31 7 views
0

私は自分のアクティビティテーマを以下のように設定しました。Lollipop v21、FragmentDialogが私のアクティビティテーマを受け付けていません

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorPrimary</item> 
    <item name="android:colorButtonNormal">@color/colorPrimary</item> 
</style> 

活動MyDialogFragmentがボタンを持っていない使用して開始されたシンプルなFragmentDialog(Kotlinコード)

MyDialogFragment().show(supportFragmentManager, MyDialogFragment.TAG) 

を持っています。したがって、私はButtonの色がテーマごとにcolorPrimaryであると予想しています。ただし、ボタンの色は灰色のみです

これはLarshipop(v21)ではなく、Marshmallow(つまりv23)で機能します。私はv22を試していません。 ...だから私は、v21が自動的にアクティビティのテーマを継承しないと思います。

以下のキットカットとするため

それは使用していないとして、これは、適用されない「アンドロイド:colorButtonNormal」

どのように私は私のFragmentDialogは私が私の活動に設定されたテーマをゲットする必要がありますか?

答えて

0

私はそれを行う方法を見つけました。私の活動テーマを定義する上で、以下のように私のFragmentDialogテーマを明示的に定義することです。

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorPrimary</item> 
    <item name="android:colorButtonNormal">@color/colorPrimary</item> 
</style> 

<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorPrimary</item> 
    <item name="android:colorButtonNormal">@color/colorPrimary</item> 
</style> 

次に、私のFragmentDialog onCreate()から明示的に設定する必要があります。

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setStyle(DialogFragment.STYLE_NO_TITLE, R.style.MyDialogTheme) 
} 

注:これは、任意のはそこにあります場合、私はまだよりエレガントな解答に開いているhttps://stackoverflow.com/a/26582301/3286489

で述べたようにのonCreateでなければなりません。

関連する問題