当前位置: 首页 > 知识库问答 >
问题:

从TextView获取选定文本

丌官向荣
2023-03-14

我正在尝试获取用户在TextView中选择的文本,我不想使用android:textisselectable=“true”来允许我的用户复制/粘贴操作

共有1个答案

骆文华
2023-03-14

我想您要找的是TextView.SetCustomSelectionActionModeCallback。这将允许您在选定文本时创建自己的ActionMode.Callback。然后,您可以使用TextView.GetSelectionStartTextView.GetSelectionEnd在选定MenuItem时检索选定的文本。下面是一个简单的示例:

    mTextView.setCustomSelectionActionModeCallback(new Callback() {

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // Remove the "select all" option
            menu.removeItem(android.R.id.selectAll);
            // Remove the "cut" option
            menu.removeItem(android.R.id.cut);
            // Remove the "copy all" option
            menu.removeItem(android.R.id.copy);
            return true;
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // Called when action mode is first created. The menu supplied
            // will be used to generate action buttons for the action mode

            // Here is an example MenuItem
            menu.add(0, DEFINITION, 0, "Definition").setIcon(R.drawable.ic_action_book);
            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // Called when an action mode is about to be exited and
            // destroyed
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {
                case DEFINITION:
                    int min = 0;
                    int max = mTextView.getText().length();
                    if (mTextView.isFocused()) {
                        final int selStart = mTextView.getSelectionStart();
                        final int selEnd = mTextView.getSelectionEnd();

                        min = Math.max(0, Math.min(selStart, selEnd));
                        max = Math.max(0, Math.max(selStart, selEnd));
                    }
                    // Perform your definition lookup with the selected text
                    final CharSequence selectedText = mTextView.getText().subSequence(min, max);
                    // Finish and close the ActionMode
                    mode.finish();
                    return true;
                default:
                    break;
            }
            return false;
        }

    });

结果

 类似资料:
  • 大家好,我得到了一个代码,我为我的项目,代码是得到心跳传感器的值从Arduino到我的android手机使用蓝牙。到目前为止,它进行得很好,它可以毫无问题地将价值发送到我的应用程序。但现在的问题是,我想得到它的值,这样我就可以用我的算法来处理它,但我现在似乎陷入了困境。

  • 我通过JFileChooser使用下面这段代码将一个名为test.xml的文件添加到我的JList中; 现在我必须从Jlist中选择一个文件,然后将它转换成另一个文档。如果我给出输入,转换步骤就会起作用; 但是如果我给它,它就不起作用; 列表及其向量使用以下代码段创建: 你们谁能告诉我如何从JList中选择该特定文件来进行转换吗?提前感谢…!

  • 问题内容: 我尝试使用输入获得当前选择的文本,但我总是得到一个空字符串: 结果成: 使用angularjs.org作为目标站点的完整可重复测试: 请注意,我实际上看到输入的文本是用COMMAND +“ a”选择的。 我究竟做错了什么? 使用量角器2.5.1,Firefox 41。 问题答案: 不适用于在元素中选择的文本,但不适用于在页面中对元素进行的选择。 您可以使用和这样的: 您可能应该为此创建

  • 问题内容: 这是有关使用的问题wtforms SelectField。 表单提交后,我希望提取选定的文本。 我有以下表格: 这是视图: 通过我获得属性(毫不奇怪…),同时我需要文本(假设是否选择了第一个选项)。 这怎么可能呢?感谢你的提示。 问题答案: 以以下形式全局定义选择: 从表格导入,将其转换为字典:

  • 问题内容: 我有一个这样的下拉列表: 如何使用JavaScript获取实际的选项文本而不是值?我可以通过以下方式获得价值: 但不是我想要的。 问题答案: 尝试选项

  • 问题内容: 我用数据库搜索的结果修改了,以便稍后使用该选择提出另一个数据库请求。 我想获取该字段的值。我可以使用哪种方法? 我只是以为我也可以向中添加事件,并将其保留在控制器的属性中。那也可以接受吗? 问题答案: 用这样的列表视图说: 从ListView获取选定的元素: 跟踪(监听)列表视图选择中的更改: