StandAlone Toolbar项目的背景波纹效应消失了

时间:2015-06-01 15:05:36

标签: android android-toolbar

使用独立工具栏时,项目的可选背景存在问题,本文后面的内容也不起作用:

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

检查下面屏幕截图中的常规工具栏,使用独立工具栏时,涟漪效果选择器已消失。

这是我的风格:

 <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>

修改 在将问题与我的代码隔离后,我能够重现该问题,并且它似乎与新的支持设计库有关。以下是有问题的测试代码:

TestToolbar.zip

enter image description here

6 个答案:

答案 0 :(得分:22)

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

我没有弄清楚你的问题,但我只是尝试创建一个与你相同的工具栏,但删除了一些我没有的样式

这是我的风格

  <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);

结果的屏幕截图

Screenshot of working toolbar

修改

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

视频: AppBarLayout with Toolbar Video

我会尝试为此找到解决方案。

答案 1 :(得分:5)

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

我建议你删除

        <item name="colorControlHighlight">@color/accentColor</item>
从您的代码

再次运行它。如果涟漪不显示(应该),请更改强调色。

答案 2 :(得分:5)

selectableItemBackground的解决方法对我来说也不起作用。到目前为止我提出的最佳策略是将工具栏的背景设置为透明:

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

这可以在展开/折叠/中间状态下启用涟漪效果(裁剪到Actionbar高度)。

答案 3 :(得分:1)

Chris Bane回答原始问题:

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

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

从图书馆的角度来看,我们在这里做的不多。 &#39;解决方法&#39;是将actionBarItemBackground设置为无边框:

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

<Toolbar
    ...
    android:theme="Theme.Toolbar.Collapsing" />

答案 4 :(得分:1)

这对我有用:

在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" >

答案 5 :(得分:0)

我项目的好例子:

            android:id="@+id/..."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_marginEnd="@dimen/..."
            android:background="@drawable/button_ripple_circle_green"
            android:theme="@style/SearchViewTheme"
            android:visibility="visible"
            app:elementColor="@color/white"
            app:hintColor="@color/text_disabled_light"
            app:leftIconMode="back"
            app:leftSearchSpace="@dimen/..."
            app:textColor="@color/white"
            app:textSize="@dimen/..."
            tools:visibility="visible" />

这是xml(android:background),其中是图标的涟漪效应&#34;搜索&#34; &安培; &#34;背面&#34;:

<item android:state_pressed="true">
    <shape android:shape="oval">
        <solid android:color="@color/icon_toolbar_pressed"/>
        <corners android:radius="3dp"/>
    </shape>
</item>

<item android:state_pressed="false">
    <shape android:shape="oval">
        <solid android:color="@color/primary"/>
        <corners android:radius="3dp"/>
    </shape>
</item>