android - TextView ActionMode 无法正确显示子菜单

标签 android menu android-actionmode

我为 ActionMode 编写了一个自定义菜单,并将其作为文本选择中的自定义 ActionMode 传递给 TextView.setCustomSelectionActionModeCallback(ActionMode)过程。它有效,但是当我用 SubMenu 单击项目时,它只显示一秒钟,然后 ActionMode 关闭并且不让我选择子菜单项。当我为我的 itmes 使用 MenuItem.SHOW_AS_ACTION_IF_ROOM 时,当我使用 Overflow item 时也会发生这种情况。 任何想法? 我正在使用 Android ICS

最佳答案

我发现当 EditText 失去焦点时, Action 模式关闭/完成:

TextView.java

@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
    super.onWindowFocusChanged(hasWindowFocus);

    if (mEditor != null) mEditor.onWindowFocusChanged(hasWindowFocus);

    startStopMarquee(hasWindowFocus);
}

注意:EditTextTextView 的子类。

Editor.java

void onWindowFocusChanged(boolean hasWindowFocus) {
    if (hasWindowFocus) {
        ...
    } else {
        ...
        hideControllers();
        ...
    }
}

解决方案

我试着创建这个:

package com.edwardsp.sample.view;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.EditText;

public class CustomEditText extends EditText {

    public CustomEditText(Context context) {
        super(context);
    }

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        if (hasWindowFocus) {
            super.onWindowFocusChanged(hasWindowFocus);
        }
    }
}

并像普通的 EditText 一样使用 CustomEditText。可以显示操作模式子菜单。我没有在 CustomEditText 中发现奇怪的行为。如果有人从此实现中发现奇怪的行为,请告诉我。

关于android - TextView ActionMode 无法正确显示子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18031643/

相关文章:

java - 尝试将解析集成到 Android 应用程序时出错错误 : Error:Execution failed for task ':app:transformClassesWithDexForDebug'

android - 三星 AOD 和锁屏媒体元数据未知

Java - 如何在 while 循环中包含 switch 语句菜单

menu - 如何禁用 Electron 上的整个下拉菜单?

android - 带有 AppCompat 的 ActionMode 无法更改背景和文本颜色

android - 如何防止actionMode和工具栏在它们之间切换时变为 "jump"?

android - 您如何访问 Android 凭据存储?

android - 从 Firebase 注销召回使用电子邮件和密码登录

android - 如何使用 4.0.3 SDK 在 Activity 底部创建菜单栏

android - 如何在 ActionMode 中禁用操作栏后退按钮