gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:27:23 31 4
gpt4 key购买 nike

我为 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com