如何更改屏幕上的文本选择小部件?

时间:2011-08-09 08:41:44

标签: android input android-edittext selection

我注意到不同的Android应用程序有不同的选择文本的方法。如果在浏览器中单击并按住,则会关闭文本,并且可以拖动左右边缘以修改选择。在Gmail应用中,光标下方会出现一个大的蓝色圆圈,便于移动。

相比之下,EditText框中的默认文本选择窗口小部件非常原始。如何改变?

更新:我忘了提到可编辑是错误的。当editable为true时,文本选择器就可以了。

P.S。它是屏幕文本选择器的正确名称是什么?

4 个答案:

答案 0 :(得分:4)

从Android 3.0(API级别11)开始,您可以在任何android:textIsSelectable上设置TextView属性,以使其文本可选。撰写本文时的默认用户界面与您为浏览器引用的行为类似。

编辑:此外,默认的Android浏览器使用自己独立于系统的文本选择机制,类似于Gingerbread中的默认文本选择控制柄。 “蓝色圆圈”听起来像手机制造商添加的定制界面。

答案 1 :(得分:1)

我会将其实现为扩展EditText并实现LongClickListenerClickListener的自定义类。然后你可以完全控制。

这只是伪代码,并指向正确的方向:

public class PrettySelectionEditText extends EditText implements OnLongClickListener, OnClickListener 
{
    private boolean isSelecting = false;

    public PrettySelectionEditText(Context context) 
    {
        super(context);
    }

    @Override
    public boolean onLongClick(View v) 
    {
        if (clickIsOnText)
        {
            isSelecting = true;
            //Highlight word and pretty controls
        }
        //Select here based on the text they've clicked on?

        //Return true if you want to consume the longClick
        return true;
    }

    @Override
    public void onClick(View v) 
    {
        //If in selection mode
        if (isSelecting)
        {
            //check where they've clicked
            if (clickIsInSelect)
            {
                updateSelection(click);
            }
            else
            {
                isSelecting = false;
            }
        }
    }
}

答案 2 :(得分:1)

您可以使用WebView代替并启用文字选择。

答案 3 :(得分:1)

如果这只是无法突出显示不可编辑文本的问题,您可以使用XML属性

android:textIsSelectable="true"

表示EditText框。

来自Android website

  

android:textIsSelectable =“true”表示可以选择不可编辑文本的内容。

关于术语的问题,我将其称为光标