pao*_*iti 6 textselection android-webview android-actionbar android-actionmode react-native
我想在webView中保留文本选择,同时防止显示actioMode的任何上下文菜单.既不是新浮动的也不是旧的actionBar,只是选择句柄,当然还有选择行为.
挂钩startActionMode中的actionModeCallback允许我清除回调onCreateActionMode中菜单中的所有项目.
这在android 6上工作正常,因为根本不显示空的浮动菜单,并且保留了actionMode文本选择行为.
不幸的是,在android <6这会留下一个空的actionBar,如何完全删除它?
有没有一个干净的方法来获得这个?我正在使用ReactNative应用程序,但使用自定义扩展webview,我也可以访问mainActivity代码.
pao*_*iti 10
实际上它非常简单:在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; }
};
}
Run Code Online (Sandbox Code Playgroud)
如果你喜欢java,你可能想要更改dummyActionMode函数的公共签名和缩进,我没有.
归档时间: |
|
查看次数: |
1696 次 |
最近记录: |