[Android][MenuItem]如何在长按actionLayout时显示标题文字?
[Android][MenuItem]How to display title text when long press actionLayout?
我在我的工具栏中使用 MenuItem
并且一些项目需要自定义布局,所以我为它们创建了 actionLayout。
UI 看起来不错,但是当我长按只有 icon
而没有 actionLayout
的项目时,它们会在图标下方显示 title
作为祝酒词,而那些actionLayout
不会显示任何内容。
我希望所有项目都具有相同的行为,即在长按期间在相同位置(图标下方)显示其标题。
- 没有自定义布局的菜单项:
<item
android:id="@+id/normal_item"
android:title="@string/title"
android:icon="@drawable/icon"
app:showAsAction="ifRoom"
/>
- 具有自定义布局的菜单项:
<item
android:id="@+id/custom_item"
android:title="@string/title"
android:icon="@drawable/icon"
app:actionLayout="@layout/layout"
app:showAsAction="ifRoom"
/>
顺便说一句,带有 actionLayout 的项目是不可点击的,所以我在 onCreateOptionsMenu
中设置了一个 onClickListener 并且它起作用了:
@CallSuper
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.myMenu, menu)
menu.findItem(R.id.custom_item).actionView?.setOnClickListener {
// do something
}
}
给actionView设置一个LongClickListener
也很容易,但是如何让它显示这样的标题文字呢? (图片来源:http://www.devexchanges.info/2017/01/android-tip-detecting-long-click-at.html):
通过简单地使用解决了这个问题:
TooltipCompat.setTooltipText(myActionView, titleString).