如何以编程方式调用TextView上的文本选择UI?

时间:2015-09-11 15:53:33

标签: android

简短摘要

我在TextView上通过 longpress 调用上下文菜单,阻止用户选择TextView中的文字(由于股票Android文本选择UI也由 longpress 调用,我的上下文菜单在文本选择器之前接收 longpress 事件。)

详细

我有一个ListView,其中包含数字或自定义行视图。每个行视图中都有一个显示用户注释的TextView。每个TextView都有android:textIsSelectable="true"

为了允许用户编辑他们的评论,我使用上下文菜单(包含“编辑评论”菜单项),当用户执行长按时在行上。

但是,我还希望用户可以选择在评论中选择文字。问题是,Android文本选择用户界面和我的上下文菜单都是通过评论和上下文菜单上下文菜单来调用的strong>首先使用 longpress 事件。

我想要做的是在上下文菜单中添加“选择文字”菜单选项,(a)选择所有评论文字,(b)调出Android文本选择界面。

但是,我一直无法找到以编程方式让Android启动文本选择UI的方法。

要明确:我不只是想选择文本并将其放在剪贴板中。我希望用户看到蓝色突出显示的文本,标准的Android文本选择句柄/插入符号,这样他们就可以自己操作选定的文本区域。

例如:我想执行以下操作(此方法位于Fragment):

@Override
public boolean onContextItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case R.id.select_text:

            // Here I would like to select all text in the comment
            // and bring up the text selection UI

            return true;

        default:
            return super.onContextItemSelected(item);
    }
}

我尝试了以下但没有成功:

AdapterView.AdapterContextMenuInfo info =  
    (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

TextView comment = (TextView) info.targetView.findViewById(R.id.comment_text);
comment.setSelectAllOnFocus(true);
comment.requestFocus();
comment.setSelectAllOnFocus(false);

感谢您的帮助!

0 个答案:

没有答案