假设一个textview
TextView tvSum = findViewById(R.id.sumTexviewId);
Run Code Online (Sandbox Code Playgroud)
如果我想更改显示的文本,我这样做:
tvSum.setText("£0.00");
Run Code Online (Sandbox Code Playgroud)
现在,假设我经常这样做,每次按下按钮时都说,也许显示在一个按钮上输入的总和.在这个例子中,你按一个,它说"1p",然后按两个,它说"12p",依此类推.
我发现如果我这样做,文本会在一段时间后变形.对于序列12345,从一切开始是好的:
(没什么压力)
("1"按下)
(然后按下"2")
(然后按下"3")然而,事情变得混乱之后:
(然后按下"4")
(然后按下"5")之后它永远不会变得更好.我没有发布代码,因为代码真的很简单:一堆按钮,只写一个短字符串到一个textview - 代码中的任何内容都不应该导致这个,诚实.(是的,我已经通过把它放在Toast上来检查写入的字符串是否正确.)是否还有其他人遇到过这个问题,如果有的话是什么解决了它?
我有一个文本视图,它本身是线性布局的一部分。XML是:
<TextView
android:id="@+id/label_text"
android:layout_width="fill_parent"
android:layout_height="77dp"
android:layout_marginTop="3dp"/>
Run Code Online (Sandbox Code Playgroud)
在主程序中,我首先将文本视图设置为一个值:
private TextView character_speaking;
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
character_speaking = (TextView) findViewById(R.id.label_text);
character_speaking.setText("a text string that was large enough for two lines");
}
Run Code Online (Sandbox Code Playgroud)
这很好用。
然后我执行另一个 setText 以响应按钮按下:
public void handleNextButtonClick(View view) {
character_speaking.setText("first one line message");
}
Run Code Online (Sandbox Code Playgroud)
这也有效
但是后来我又做了一个 setText 来响应另一个按钮的按下:
public void handlePrevButtonClick(View view) {
character_speaking.setText("second one line message");
}
Run Code Online (Sandbox Code Playgroud)
和灾难来袭。第二行消息覆盖第一行消息而不清除它。
在编写第二行消息之前,是否有清除第一行消息的方法?
我已经尝试通过使用 EditText 而不是 TextEdit 来解决这个问题,但这是不可接受的,因为它允许用户在现场书写。