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"
我有一个简单的设置:
<?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"