是否可以在TextView中插入文本?

时间:2011-09-28 06:00:48

标签: android textview

在Android TextView中附加文本会将文本添加到当前文本的末尾。我想在TextView的指定位置插入一些文本,而不会在textview滚动时干扰它的移动。是否可以插入文字?请帮忙

7 个答案:

答案 0 :(得分:5)

您可以将TextView的BufferType设置为Editable。它只需要一次。

textView.setText(textView.getText(), BufferType.EDITABLE);

然后你可以使用:

((Editable) textView.getText()).insert(where, text)

如果您需要经常插入文本,我相信这种方式更有效。

答案 1 :(得分:2)

我会阅读TextView中当前的文本,将其拆分到我想插入的点,然后将它们放在一起。像这样:

String text = myTextView.getText().toString();
String first = text.substring( 0, splitPoint );
String second = text.substring( splitPoint, text.length );

myTextView.setText( first + insertText + second );

答案 2 :(得分:1)

String old=textView.getText().toString();

String new= "pre"+old+"after"; // can manipulate using substring also

textView.setText(new);

答案 3 :(得分:1)

使用字符串缓冲区尝试如下。

String string=yourTextView.getText().toString();

StringBuffer sb=new StringBuffer(string);

    sb.insert(index, "string_to_insert");

string=sb.toString();

yourTextView.setText(string);

答案 4 :(得分:1)

你可以这样做,这可能是最简单的方法

    String text_view_text=textView.getText().toString();
    StringBuffer sb=new StringBuffer(text_view_text);
    sb.insert(position_to_insert,text_to_insert);
    textView.setText(sb.toString());

答案 5 :(得分:1)

有点偏离主题,但如果你的'TextView'碰巧是EditText ......

EditText.getText()实际上返回了一个可编辑的,而不是人们所期望的CharSequence或String。可编辑的确有插入和替换文本的方法。

    Editable e = editText.getText();
    e.insert(pos, text);
    e.replace(start, end, text);
    // etc.

上面的方法从子串中制作一个新的字符串,然后将它放回到editText是可以的,但是如果你的文本有任何标记,它就会丢失。与editable.insert()/ replace()相反,保留插入/替换文本之外的任何标记。

答案 6 :(得分:0)

试试这个:

private void insertTextAtPoint(String textToAdd, int point) {
  private textBefore = textView.substring(0, point);
  private textAfter = textView.substring(point, textView.getText().toString().length);
  textView.setText(textBefore + textToAdd + textAfter);
}