【问题标题】:Android - get selection of text from EditTextAndroid - 从 EditText 中选择文本
【发布时间】:2010-01-29 15:41:22
【问题描述】:

我正在尝试实现复制/粘贴功能。如何从 EditText 中选择文本?

EditText et=(EditText)findViewById(R.id.title);

blabla onclicklistener on a button:

int startSelection=et.getSelectionStart();
int endSelection=et.getSelectionEnd();

那我就卡住了。有什么想法吗?

【问题讨论】:

    标签: android selection android-edittext


    【解决方案1】:

    您似乎已经通过查找所选区域完成了困难的部分。现在你只需要从全文中提取那个子字符串。

    试试这个:

    String selectedText = et.getText().substring(startSelection, endSelection);
    

    这只是一个基本的Java String 操作。

    【讨论】:

    • 对 android 的一个小抱怨是 getSelectionStart() 和 getSelectionEnd() 指的是选择内容的顺序,这并不一定会导致 Start
    • 伙计们,我和你的回答一样,但我的 getselectionStart() 和 getSelectionEnd() 方法有问题。两者都返回相同的值。
    • et.getText() 返回一个可编辑的。 substring() 需要一个字符串。您需要添加 toString()。即-et.getText().toString().substring(start, end)
    【解决方案2】:

    您应该使用 Editable 对象中的特殊功能:

    Editable txt = et.getText();
    txt.replace(int st, int en, CharSequence source)
    

    此命令将 (st..en) 指定的部分替换为字符串 (CharSequence)。

    【讨论】:

      【解决方案3】:

      您不需要执行所有这些操作,只需长按编辑文本,它将显示复制/粘贴/选择等所有相关选项。如果要保存文本,请使用 maird 显示的方法

      【讨论】:

        【解决方案4】:

        String selectedText = et.getText().toString().substring(startSelection, endSelection);
        getText() 返回一个可编辑的。子字符串需要一个字符串。 toString() 正确连接它们。

        【讨论】:

          【解决方案5】:

          您可以通过这种方式从EditText获取选定的文本:

          EditText editText = (EditText) findViewById(R.id.editText3);
          int min = 0;
          int max = editText.getText().length();
          if (editText.isFocused()) {
              final int selStart = editText.getSelectionStart();
              final int selEnd = editText.getSelectionEnd();
              min = Math.max(0, Math.min(selStart, selEnd));
              max = Math.max(0, Math.max(selStart, selEnd));
          }
          // here is your selected text
          final CharSequence selectedText = editText.getText().subSequence(min, max);
          String text = selectedText.toString();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-26
            • 1970-01-01
            • 2022-01-22
            • 1970-01-01
            • 1970-01-01
            • 2012-04-21
            相关资源
            最近更新 更多