java - 如何在 android 中以编程方式更改 Widget.Toolbar 主题?
问题描述
toolbar.getContext().setTheme(R.style.ToolBarStyleDark);
这是我在onCreate
. 我得到的结果是这样的
它以某种方式仅更改文本背景而不是整个工具栏背景。调用 super.setTheme(darkmode ? R.style.AppTheme : R.style.DarkTheme); 完美地改变了应用程序主题,但不适用于工具栏。
这是工具栏 XML 的样式:
<style name="ToolBarStyle" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
<item name="actionMenuTextColor">@android:color/white</item>
<item name="android:background">@color/colorPrimary</item>
</style>
<style name="ToolBarStyleDark" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
<item name="actionMenuTextColor">@android:color/white</item>
<item name="android:background">@color/colorPrimary2</item>
</style>
这是在activity_main.xml 中定义的工具栏
<androidx.appcompat.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"
app:theme="@style/ToolBarStyle"
android:elevation="4dp"
>
<ImageButton
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/copy"
android:onClick="showView"
android:layout_gravity="right"
/>
</androidx.appcompat.widget.Toolbar>
手动更改 App:theme 可以按预期工作,但代码会出错。