独立工具栏项目上的背景纹波效应消失了

使用独立工具栏有一个select项目的背景的问题,下面这篇文章也没有工作:

http://blog.mohitkanwal.com/blog/2015/03/07/styling-material-toolbar-in-android/

检查下面屏幕截图中的常规工具栏,使用独立工具栏时,纹波效果select器不见了。

这是我的风格:

<style name="ToolbarTheme" parent="Widget.AppCompat.Toolbar"> <item name="actionMenuTextColor">@color/green</item> <item name="drawerArrowStyle">@style/DrawerArrowToggle</item> <item name="colorControlNormal">@color/white</item> <item name="colorControlActivated">@color/white</item> <item name="android:textColorPrimary">@color/white</item> <item name="titleTextAppearance">@style/ActionBar.TitleText</item> <item name="android:actionOverflowButtonStyle">@style/MoreActionButton</item> <item name="actionButtonStyle">@style/Widget.AppCompat.ActionButton</item> <item name="selectableItemBackground">?android:selectableItemBackground</item> <item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item> <item name="colorControlHighlight">@color/accentColor</item> </style> 

编辑:从我的代码隔离问题后,我能够重现这个问题,它似乎是与新的支持devise库有关。 这里是有问题的testing代码:

TestToolbar.zip

在这里输入图像说明

Solutions Collecting From Web of "独立工具栏项目上的背景纹波效应消失了"

这是使用Android 5.1 genymotion模拟器完成的

我没有弄清楚你的问题,但我只是试图创build一个与你的相同的工具栏,但删除了一些我没有的风格

这是我的风格

  <style name="ToolbarTheme" parent="Widget.AppCompat.Toolbar"> <item name="actionMenuTextColor">#1bff3a</item> <item name="colorControlNormal">#FFF</item> <item name="colorControlActivated">#FFF</item> <item name="android:textColorPrimary">#FFF</item> <item name="actionButtonStyle">@style/Widget.AppCompat.ActionButton</item> <item name="selectableItemBackground">?android:selectableItemBackground</item> <item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item> <item name="colorControlHighlight">@color/accentColor</item> </style> 

我的工具栏布局

  <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?colorPrimary" app:theme="@style/ToolbarTheme" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

我的菜单

 <item android:id="@+id/action_settings" android:title="@string/action_settings" android:icon="@drawable/abc_ic_clear_mtrl_alpha" app:showAsAction="always" /> 

活动代码

  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.menu_home); 

结果的屏幕截图

工作工具栏的屏幕截图


编辑

在下载你在问题中提供的示例后,使用AppBarLayout ,问题与​​独立的工具栏或操作栏(两者都有相同的问题) AppBarLayout ,问题似乎是Ripple效果将绘制在AppBarLayout而不是视图的选定的菜单项,我会录制一个解释它的video。

video: 带工具栏video的AppBarLayout

我会尽力find一个解决scheme。

关于selectableItemBackground的解决方法也没有为我工作。 我到现在为止的最佳策略是将工具栏的背景设置为透明:

 <android.support.v7.widget.Toolbar ... android:background="@android:color/transparent"/> 

这样可以在展开/折叠/中间状态下实现连动效果(裁剪到Actionbar高度)。

它看起来像涟漪效应仍然存在,但波纹的颜色已经改变。 我不确定你的问题是什么,但这是我所看到的。

我build议你删除

  <item name="colorControlHighlight">@color/accentColor</item> 

从你的代码中运行一遍。 如果涟漪不显示(他们应该),改变口音的颜色。

Chris Bane回答了最初的问题:

https://code.google.com/p/android/issues/detail?id=176431

这是因为默认情况下?attr / actionBarItemBackground是一个无界的RippleDrawable,这意味着它投影/绘制到下一个父。 在这种情况下,这是您实际看不到的CollapsingToolbarLayout。

从图书馆的angular度来看,我们可以做的不多。 “解决方法”是设置actionBarItemBackground不是无边界的:

 <style name="Theme.Toolbar.Collapsing" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> <item name="actionBarItemBackground">?attr/selectableItemBackground</item> </style> <Toolbar ... android:theme="Theme.Toolbar.Collapsing" /> 

这对我工作:

在styles.xml中定义一个自定义主题

 <style name="MyAppbarTheme" parent="@style/ThemeOverlay.AppCompat.Light"> <item name="colorControlHighlight">@color/colorAccent</item> </style> 

然后在AppBarLayout或工具栏上应用此主题

 <android.support.design.widget.AppBarLayout android:id="@+id/appbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/MyAppbarTheme" >