設定可能なテーマを持つアプリでは、全体のテーマに一致するようにapp:popupTheme
を設定するにはどうすればよいですか?アプリの全体テーマに基づいて `app:popupTheme`を変更するには?
Android Studioのウィザードを使用してナビゲーションドロワー付きのアプリを作成しました。次に、このコードを変更して、実行時に暗いテーマと軽いテーマを選択するためのチェックボックスを追加し、アクティビティに対してsetTheme
を呼び出しました。完全なコードはthis github repoにあります。 app/src/main/res/values/styles.xml
で
、Androidのメーカーは、次のように生成された:
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
このスタイルは、app/src/main/res/layout/app_bar_main.xml
で使用されるも、Androidのメーカーによって生成されます
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
app:popupTheme
属性が "で使用されるスタイルを決定」と表示されます。ライトテーマを使用しているときには正しく表示されますが、実行時に暗いテーマに切り替えると、メニューの色が間違っています。
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark"/>
はそれが暗いテーマに動作させるために、しかし、光テーマがアクティブである場合、メニューは間違っになります。私はこのように、AppTheme.PopupOverlay
の親を変更することができます知っています。
暗いか明るいかにかかわらず、メニューの色付けをアプリケーションの全体的なテーマに動的に適応させる正しい方法は何ですか? app:popupTheme
は動的に変更する必要がありますか? AppTheme.PopupOverlay
の親は動的に変更する必要がありますか?他に何か?