首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未显示ActionMode菜单图标

未显示ActionMode菜单图标
EN

Stack Overflow用户
提问于 2019-08-24 10:13:30
回答 2查看 461关注 0票数 1

当长时间单击回收视图中的项目时,我正在尝试设置上下文操作栏。但是菜单图标没有显示。

代码如下所示。

代码语言:javascript
复制
listAdapter.setOnItemClickListener(object : OnItemClickListener {

            override fun onItemClick(position: Int) {
               ...
            }

            override fun onItemLongClick(position: Int): Boolean {

                if (actionMode != null) {
                    return false
                }

                val activity = activity as AppCompatActivity
                actionMode = activity.startSupportActionMode(actionModeCallback)


                return true
            }

        })

动作模式回调

代码语言:javascript
复制
internal val actionModeCallback = object : ActionMode.Callback {

    override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
        when (item?.itemId) {
            R.id.item_delete -> {
                actionMode?.finish()
                return true
            }
        }
        return false
    }

    override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        actionMode?.menuInflater?.inflate(R.menu.menu_context, menu)
        actionMode?.title = "delete"

        return true
    }

    override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {

        return false
    }

    override fun onDestroyActionMode(mode: ActionMode?) {
        actionMode = null
    }
}

menu_context.xml

代码语言:javascript
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item_delete"
        android:title="@string/menu_option_text_delete"
        android:icon="@drawable/ic_delete_white_24dp"
        app:showAsAction="always"
        />
</menu>

我试过什么?

  • ActivityActionMode使用非支持库版本
  • 尝试更改操作模式背景,以查看主题是否存在问题。
  • 总是在onPrepareActionMode

没有工作,甚至动作模式标题也没有显示。

我使用的是androidx,appCompat版本:1.1.0-rc01

请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-07 05:21:37

事实上,正如问题跟踪器中指出的那样,这在我看来是一个错误。

覆盖onCreateActionMode(模式: ActionMode?,菜单:菜单?):布尔{ActionMode菜单)返回真} 请注意,您应该使用传递的模式,而不是您自己的ActionMode对象来获得正确的充气器。

票数 0
EN

Stack Overflow用户

发布于 2019-08-24 14:21:34

解决方案是在onPrepareActionMode中手动更新菜单

代码语言:javascript
复制
@Override
  public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
  menu.findItem(R.id.menu_archive).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
  menu.findItem(R.id.menu_delete).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
  menu.findItem(R.id.menu_upload_to_cloud).setShowAsAction
  (MenuItem.SHOW_AS_ACTION_ALWAYS);
   return true;
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57636989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档