MaterialToolBar ontouch 从未调用过

MaterialToolBar ontouch never called

我有一个简单的设置:

<?xml version="1.0" encoding="utf-8"?>
 <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:id="@+id/ddd"
 android:layout_height="match_parent"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 tools:context=".pkgTestforend.DriverListFragment">



    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:liftOnScroll="true" >

            <com.google.android.material.appbar.MaterialToolbar
                android:id="@+id/topAppBar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:title="PageTitle"
                app:menu="@menu/top_app_bar"
                app:layout_scrollFlags="scroll|enterAlways"
                app:navigationIcon="@drawable/baseline_menu_24"
                style="@style/Widget.MaterialComponents.Toolbar.Primary"
                />

    </com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

并且:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/search"
        android:icon="@drawable/baseline_search_24"
        android:title="Search"
        android:contentDescription="contdescript"
        app:actionViewClass="androidx.appcompat.widget.SearchView"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/favorite"
        android:icon="@drawable/baseline_favorite_24"
        android:title="Favorite"
        android:contentDescription="Contentdescription"
        app:showAsAction="ifRoom" />



    <item
        android:id="@+id/more"
        android:title="more"
        android:icon="@drawable/baseline_more_vert_24"
        android:contentDescription="kljlkj"
        app:showAsAction="never" />

</menu>

正在设置工具栏:https://snippi.com/s/xyogasj

问题是,尽管我遵循了此处定义的每个步骤,但永远不会调用 ontouch 菜单项侦听器,无论我使用的是侦听器还是覆盖方法,我错过了什么?

你应该改变的几件事:

app:showAsAction="always|collapseActionView"

这保证始终显示搜索视图,否则您将收不到 ontouchlistener。更多信息look here

第二件事:确保您的 MaterialToolBar 是可点击的:

android:clickable="true"