android 中具有操作菜单的工具栏上的波纹效果

Ripple effect on toolbar which has action menu in android

我不确定这是只发生在我身上还是发生在其他人身上,这是正在发生的事情:

我设置了menu.xml哪四个图标

<menu 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"
    tools:context="com.ylg.default.Home">

    <item
        android:id="@+id/action_key"
        android:icon="@drawable/key"
        android:orderInCategory="9999999"
        android:title="@string/lock"
        app:showAsAction="always" />

    <item
        android:id="@+id/action_alert"
        android:icon="@drawable/bell"
        android:orderInCategory="9999999"
        android:title="@string/alert_action"
        app:showAsAction="always" />


    <item
        android:id="@+id/action_home"
        android:icon="@drawable/home_tool"
        android:orderInCategory="9999999"
        android:title="@string/office"
        app:showAsAction="always" />


    <item
        android:id="@+id/action_logo"
        android:icon="@drawable/rupees"
        android:orderInCategory="9999999"
        android:title="@string/home"
        app:showAsAction="always" />
</menu>

图标在我的 Nexus 5 上正确显示并带有涟漪效应,但问题是标题被剪切了,因此我更改了我样式中图标(右和左)的填充值,使用:

<style name="Theme.default" parent="Theme.AppCompat.Light.NoActionBar">
 <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item> 
</style>

<style name="MyActionButtonStyle" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:minWidth">40dp</item>
        <item name="android:paddingLeft">2dp</item>
        <item name="android:paddingRight">2dp</item>
    </style>

如果我放这个,菜单图标会缩小彼此之间的间距,但当我触摸图标时,不会看到波纹效果。

我不确定为什么会这样?有人可以帮我解决这个问题吗?

谢谢!

您用于 MyActionButtonStyle 的 parent 没有合适的背景。 parent 应该是 Widget.AppCompat.Light.ActionButton

<style name="MyActionButtonStyle" parent="Widget.AppCompat.Light.ActionButton">

但无论如何,减少菜单项之间的 space 并不是一个好主意。相反,使用

app:showAsAction="ifRoom"

所以不适合的项目将被放入溢出。这是必要的,因为 Nexus 5 总是有一个更小的 dp 屏幕,导致标题被削减得更多。棉绒 should have warned you about this.