Android - 工具栏中的菜单项没有涟漪效应和工具提示



我有一个小问题:长按菜单项时显示的"工具提示"不再出现,工具栏菜单项上的涟漪效应也不再出现。尽管如此,涟漪效应还是出现在我在布局中获得的按钮上,而不是在工具栏中。

我不是为工具栏声明主题或样式,但我经常在运行时更改其颜色(但不直接在 onCreate 中,所以这无关紧要,因为它在不更改颜色的情况下也无法工作(。

像这样的其他解决方案对我来说不起作用......

工具栏的 XML:

<android.support.v7.widget.Toolbar
        android:background="@color/Grey"
        android:id="@+id/my_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_alignParentTop="true"
        android:elevation="4sp"
        android:layout_alignParentStart="true" />

工具栏代码:

myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

充气菜单:

@Override
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.toolbarmenu, menu);
    invalidateOptionsMenu();
    return true;
}

我的主题是来自AppCOmpatDark(NoActionBar的一个(的孩子,在onPrepareOptionsMenu中,我经常更改菜单项的可见性并更改它们的颜色...

任何帮助,也只是可能触发此错误的方向,非常感谢。

感谢您的帮助!

由于AppTheme,即使我也遇到了类似的问题。我使用 Theme.MaterialComponents.NoActionBar 作为应用程序的默认主题,仅用于工具栏,涟漪效果不起作用。但是我使用应用程序:主题解决了它。

请尝试向工具栏添加app:theme="@style/Theme.AppCompat.Light.NoActionBar"。这是对它androidx.appcompat.widget.Toolbar对我有用的测试。

<androidx.appcompat.widget.Toolbar
    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="?attr/actionBarSize"
    android:background="@android:color/white"
    app:layout_collapseMode="pin"
    android:elevation="4dp"
    app:theme="@style/Theme.AppCompat.Light.NoActionBar"
    android:stateListAnimator="@animator/appbar_elevation"
    tools:targetApi="lollipop">

现在您所要做的就是向视图添加android:background="?attr/selectableItemBackground"以获得涟漪/触摸效果。

<ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="?attr/selectableItemBackground"
            android:contentDescription="@null"
            android:src="@mipmap/ic_launcher" />
我相信

我在更改应用程序中某些行的背景颜色时遇到了类似的问题。我发现选择项目的涟漪效应由于更改了默认值的颜色而在背景下方绘制。

在我的列表视图中,我添加了XML属性android:drawSelectorOnTop="true",这使涟漪效应突出

将相同的属性添加到代码中可能会解决您的问题。

安卓文档

最新更新