我正在使用新的MaterialComponents,我的应用主题是:
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item>
<item name="colorAccent">@color/secondaryColor</item>
</style>
如何更改ActionBar的背景颜色
我了解this question,但是它已经过时并且不使用MaterialComponents
我不想在每个屏幕上都添加工具栏,只是为了更改背景颜色。
答案 0 :(得分:0)
您需要根据背景颜色使用ThemeOverlay.MaterialComponents.ActionBar
或ThemeOverlay.MaterialComponents.Dark.ActionBar
。
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
<item name="colorPrimary">@color/primaryColor</item>
<item name="colorPrimaryDark">@color/primaryDarkColor</item>
<item name="colorAccent">@color/secondaryColor</item>
<item name="actionBarTheme">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@style/ThemeOverlay.MaterialComponents.ActionBar">
<item name="android:background">#fff</item>
</style>
答案 1 :(得分:0)
我知道已经来不及了。
根据Material Component。您必须添加您的AppTheme:
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
<!-- This will change ActionBar BackgroundColor to Black -->
<item name="colorSurface">#000000</item>
<!-- This will change ActionBar TextColor to White -->
<item name="colorOnSurface">#FFFFFF</item>
</style
注意:如果您通过带有操作栏的模板创建项目,
检查您的文件:res / layout / app_bar_main.xml
确保删除:
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" <<== MAKE SURE YOU DELETE THIS ONE LINE
app:popupTheme="@style/AppTheme.PopupOverlay" />
</com.google.android.material.appbar.AppBarLayout>
否则,ActionBar BackgroundColor将取决于:?attr / colorPrimary
答案 2 :(得分:0)
由于您使用的是Theme.MaterialComponents.Light
应用主题,因此默认情况下,ActionBar背景颜色是由 colorPrimary
属性定义的。
只需使用 actionBarTheme
属性即可覆盖背景色:
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
<item name="actionBarTheme">@style/ThemeOverlay.ActionBar</item>
...
</style>
具有:
<style name="ThemeOverlay.ActionBar" parent="">
<item name="colorPrimary">@color/mycolor</item>
</style>
您还可以使用应用主题中的 actionBarStyle
属性来自定义背景颜色。
类似的东西:
<style name="AppTheme" parent="Theme.MaterialComponents.*">
<item name="actionBarStyle">@style/Custom.ActionBar</item>
...
</style>
在这种情况下,您可以使用background
属性:
<style name="Custom.ActionBar" parent="Widget.MaterialComponents.Light.ActionBar.Solid">
<item name="background">@color/mycolor</item>
</style>