android - MaterialToolBar ontouch 从未调用过
问题描述
我有一个简单的设置:
<?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 menuitem 侦听器,无论我使用的是侦听器还是覆盖方法,我错过了什么?
解决方案
你应该改变的几件事:
app:showAsAction="always|collapseActionView"
这保证始终显示搜索视图,否则您将不会收到 ontouchlistener。更多信息 请看这里
第二件事:确保您的 MaterialToolBar 是可点击的:
android:clickable="true"
推荐阅读
- python - 在 REAPER 中多次运行 PyQt4 脚本会导致 SIP 错误
- java - 如何获得下一小时的毫秒数
- marklogic - 动态设置 ml-gradle 属性
- angular - Angular 6 将数据发布到休息 API 但返回错误 500
- javascript - 多次调用 Socket.io 事件侦听器,即使它仅从我的节点 js 服务器发出一次
- python - 如何在 MacOS Sierra/High Sierra 中使用 python 获取用户设置的计算机名称
- c++ - 读取 cin 但从文件读取时超出运行时间?
- android - 按每个卡片视图中的数字排序卡片视图
- r - 针对 mu 值的具有随机效应的多个单样本比较
- flex-lexer - 使用 lex 将输入与字符串匹配