我尝试使用此主题/样式将图像添加到ActionBar背景
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">@drawable/actionbar_background</item>
</style>
但是,尽管背景发生了变化,但却在标题和菜单按钮上产生了怪异的效果。可以认为它们是ActionBar中单独的子视图(也许我不确定),并且Drawable分别应用于它们。
我希望在ActionBar上应用无缝的Drawable。这是可能的还是我应该放弃,而是只用纯色更改背景?
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layout_activity_main"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>
styles.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="coordinatorLayoutStyle">@style/Widget.Support.CoordinatorLayout</item>
<item name="colorAccent">@android:color/black</item>
<item name="colorPrimary">@android:color/holo_blue_dark</item>
<item name="colorPrimaryDark">@android:color/holo_blue_dark</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
<item name="android:textColorHint">@android:color/white</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="android:windowBackground">@drawable/no_actionbar_background</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:background">@drawable/actionbar_background</item>
</style>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">
<item name="android:background">@android:color/black</item>
</style>
</resources>
答案 0 :(得分:0)
"android:background"
以您的样式将背景更改为布局中的每个组件。 您可以通过以下方式更改ActionBar的颜色。
<item name="android:navigationBarColor">@color/colorPrimary</item>
答案 1 :(得分:0)
设置视图的android:theme
属性时,您传递的样式将应用于该视图及其所有子视图。就您而言,AppBarLayout确实(内部)为标题和溢出菜单按钮使用了单独的视图。
但是,由于您的样式似乎唯一要做的就是设置android:background
属性,因此可以直接在AppBarLayout上进行设置。因此,替换为:
<android.support.design.widget.AppBarLayout android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay">
与此:
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/actionbar_background">
答案 2 :(得分:0)
这是AppCompat-v7 Toolbar的示例,其他Toolbar在主题方面有些不同。
我无法真正给出最适合您的答案,而此代码只是在这里向您展示方法。
变化之处在于工具栏正在使用style
而不是android:theme
,并且使用了新样式AppTheme.Toolbar
。
AppTheme.Toolbar
将您的自定义背景,工具栏内视图的主题(标题,副标题等)和弹出菜单的主题进行分组。
孩子的主题和弹出菜单是分开的,因此您可以分别控制每个组件。
尝试使用其parent
属性(从黑暗到明亮),然后选择最适合您的东西。
进入您的styles.xml
<style name="AppTheme.Toolbar">
<item name="android:background">@drawable/actionbar_background</item>
<item name="popupTheme">@style/AppTheme.PopupOverlay</item>
<item name="android:theme">@style/AppTheme.AppBarOverlay</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<!-- Change attribute of the toolbar views-->
</style>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark">
<!--Change attribute of the menu-->
</style>
进入您的activity_main.xml
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
style="@style/AppTheme.Toolbar"
android:layout_height="?attr/actionBarSize" />
</android.support.design.widget.AppBarLayout>