gpt4 book ai didi

android-actionbar - android webview : prevent text selection actionMode actionBar

转载 作者:行者123 更新时间:2023-12-04 11:03:14 25 4
gpt4 key购买 nike

我想在 webView 中保留文本选择,同时防止显示 actionMode 的任何上下文菜单。新的 float 栏和旧的操作栏都不是,只有选择句柄,当然还有选择行为。

在 startActionMode 中 Hook 到 actionModeCallback 允许我在回调 onCreateActionMode 中清除菜单中的所有项目。

这在 android 6 上运行良好,因为根本不会显示一个空的 float 菜单,并且会保留 actionMode 文本选择行为。

不幸的是,在 android < 6 上,这会留下一个空的 actionBar,我怎样才能完全删除它?

有没有一种干净的方法来获得这个?我正在使用 ReactNative 应用程序,但使用自定义扩展 webview,并且我还可以访问 mainActivity 代码。

最佳答案

实际上它非常简单:在 startActionMode 中返回一个新的空 ActionMode 而不是返回 null,null 被解释为取消操作模式以及需要它的内容。

您需要覆盖 startActionMode 的旧的和新的 api 23 签名:

@Override
public ActionMode startActionMode(ActionMode.Callback callback, int type) {
return this.dummyActionMode();
}

@Override
public ActionMode startActionMode(ActionMode.Callback callback) {
return this.dummyActionMode();
}

public ActionMode dummyActionMode() {
return new ActionMode() {
@Override public void setTitle(CharSequence title) {}
@Override public void setTitle(int resId) {}
@Override public void setSubtitle(CharSequence subtitle) {}
@Override public void setSubtitle(int resId) {}
@Override public void setCustomView(View view) {}
@Override public void invalidate() {}
@Override public void finish() {}
@Override public Menu getMenu() { return null; }
@Override public CharSequence getTitle() { return null; }
@Override public CharSequence getSubtitle() { return null; }
@Override public View getCustomView() { return null; }
@Override public MenuInflater getMenuInflater() { return null; }
};
}

如果您喜欢 java,您可能想要更改 dummyActionMode 函数的公共(public)签名和缩进,我不喜欢。

关于android-actionbar - android webview : prevent text selection actionMode actionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088057/

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