【问题标题】:Android - No ripple effect & no tooltip on menu items in toolbarAndroid - 工具栏中的菜单项上没有涟漪效应和没有工具提示
【发布时间】:2017-06-13 20:37:44
【问题描述】:

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

我没有为工具栏声明主题或样式,但我经常在运行时更改它的颜色(但不是直接在 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 中,我经常更改菜单项的可见性并更改它们的颜色...

非常感谢任何帮助,以及可能触发此错误的说明。

感谢您的帮助!

【问题讨论】:

    标签: android android-layout android-toolbar android-theme


    【解决方案1】:

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

    在我的 ListView 中,我添加了 XML 属性 android:drawSelectorOnTop="true",它将波纹效果带到了前台。

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

    Android Documentation

    【讨论】:

    • 嗯,不,这并没有解决任何问题,但感谢您的帮助:)
    【解决方案2】:

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

    请尝试将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" />
    

    【讨论】:

      猜你喜欢
      • 2015-10-17
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多