首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除EditText的“文本选择”上下文操作栏但保留文本选择功能

如何删除EditText的“文本选择”上下文操作栏但保留文本选择功能
EN

Stack Overflow用户
提问于 2015-06-23 10:33:39
回答 2查看 846关注 0票数 2

我想为EditText上的基本复制、剪切、粘贴和格式化操作创建自定义界面。但是当我开始选择文本时,文本选择上下文栏会出现在顶部。我无法弄清楚如何删除CAB,而仍然保持选择文本的能力。

使用setCustomSelectionActionModeCallback与覆盖的ActionMode.Callback删除上下文栏,但也消除了选择文本的能力。

EN

回答 2

Stack Overflow用户

发布于 2020-05-30 23:18:18

您可以完全删除ActionBarContextView。

所以,使用以下代码:

代码语言:javascript
复制
    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);
                    }
            }
    }
票数 1
EN

Stack Overflow用户

发布于 2015-06-24 09:29:52

我设法通过改变*actionMode*项的styles.xml样式来解决这个问题。

想法是使动作模式动作条覆盖窗口,在高度为1px,透明和与默认绘图设置为空白。

styles.xml风格

代码语言:javascript
复制
<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可绘图

代码语言:javascript
复制
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<size android:height="0px" android:width="0px"></size>
</shape>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31000437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档