我想为EditText上的基本复制、剪切、粘贴和格式化操作创建自定义界面。但是当我开始选择文本时,文本选择上下文栏会出现在顶部。我无法弄清楚如何删除CAB,而仍然保持选择文本的能力。
使用setCustomSelectionActionModeCallback与覆盖的ActionMode.Callback删除上下文栏,但也消除了选择文本的能力。
发布于 2020-05-30 23:18:18
您可以完全删除ActionBarContextView。
所以,使用以下代码:
tv.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
removeActionBar(getWindow().getDecorView());
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode actionMode) {
}
});
private void removeActionBar(View v) {
ViewGroup viewgroup = (ViewGroup) v;
for (int i = 0; i < viewgroup.getChildCount(); i++) {
View v1=viewgroup.getChildAt(i);
if ( v1 instanceof ViewGroup )
removeActionBar(v1);
if ( v1 instanceof ActionBarContextView ) {
viewgroup.removeView(v1);
}
}
}发布于 2015-06-24 09:29:52
我设法通过改变*actionMode*项的styles.xml样式来解决这个问题。
想法是使动作模式动作条覆盖窗口,在高度为1px,透明和与默认绘图设置为空白。
styles.xml风格
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<!--how to hide action mode-->
<item name="android:windowActionModeOverlay">true</item>
<item name="android:actionModeStyle">@style/ActionModeStyleBlank</item>
<item name="android:actionModeBackground">@android:color/transparent</item>
<item name="android:actionModeCopyDrawable">@drawable/blank</item>
<item name="android:actionModeCloseDrawable">@drawable/blank</item>
<item name="android:actionModeCutDrawable">@drawable/blank</item>
<item name="android:actionModePasteDrawable">@drawable/blank</item>
<item name="android:actionModeSelectAllDrawable">@drawable/blank</item>
<item name="android:actionModeSplitBackground">@android:color/transparent</item>
</style>
<!--size should be 1px otherwise full size action bar is shown -->
<style name="ActionModeStyleBlank">
<item name="android:actionBarSize">1px</item>
<item name="android:height">1px</item>
</style>
</resources>blank.xml可绘图
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<size android:height="0px" android:width="0px"></size>
</shape>https://stackoverflow.com/questions/31000437
复制相似问题