在Android TextView中附加文本会将文本添加到当前文本的末尾。我想在TextView的指定位置插入一些文本,而不会在textview滚动时干扰它的移动。是否可以插入文字?请帮忙
答案 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);
}