我注意到不同的Android应用程序有不同的选择文本的方法。如果在浏览器中单击并按住,则会关闭文本,并且可以拖动左右边缘以修改选择。在Gmail应用中,光标下方会出现一个大的蓝色圆圈,便于移动。
相比之下,EditText框中的默认文本选择窗口小部件非常原始。如何改变?
更新:我忘了提到可编辑是错误的。当editable为true时,文本选择器就可以了。
P.S。它是屏幕文本选择器的正确名称是什么?
答案 0 :(得分:4)
从Android 3.0(API级别11)开始,您可以在任何android:textIsSelectable
上设置TextView
属性,以使其文本可选。撰写本文时的默认用户界面与您为浏览器引用的行为类似。
编辑:此外,默认的Android浏览器使用自己独立于系统的文本选择机制,类似于Gingerbread中的默认文本选择控制柄。 “蓝色圆圈”听起来像手机制造商添加的定制界面。
答案 1 :(得分:1)
我会将其实现为扩展EditText
并实现LongClickListener
和ClickListener
的自定义类。然后你可以完全控制。
这只是伪代码,并指向正确的方向:
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”表示可以选择不可编辑文本的内容。
关于术语的问题,我将其称为光标。