1

我为 an 编写了一个自定义菜单,并将其作为文本选择过程中的自定义ActionMode传递给了。它可以工作,但是当我单击带有 的项目时,它只会显示它们一秒钟然后关闭并且不要让我选择子菜单项。当我用于我的项目时,当我使用溢出项目时也会发生这种情况。任何的想法?我正在使用 Android ICSTextView.setCustomSelectionActionModeCallback(ActionMode)ActionModeSubMenuActionModeMenuItem.SHOW_AS_ACTION_IF_ROOM

4

1 回答 1

1

我发现动作模式在EditText失去焦点时关闭/完成:

TextView.java

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

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

    startStopMarquee(hasWindowFocus);
}

注:EditText是 的子类TextView

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);
        }
    }
}

CustomEditText正常使用EditText。可以显示动作模式子菜单。我没有在CustomEditText. 如果有人从这个实现中发现奇怪的行为,请告诉我。

于 2015-05-25T15:16:05.347 回答