我是 Android 编程新手。我在单击按钮时发生以下代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button) findViewById(R.id.morse_btn);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
loopCode();
}
});
}
这称为:
public void loopCode()
{
String code = "Hello There";
TextView view = (TextView) findViewById(R.id.code_txt);
String s = "";
for(int i = 0; i < code.length(); i++)
{
s+=code.charAt(i);
view.setText(s);
try {
TimeUnit.SECONDS.sleep(1);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
但是当我在手机上运行它时,直到 for 循环结束后才会附加文本,即我按下按钮,几秒钟后,整个字符串“Hello There”就会出现。
我怎样才能让它一次写一个字符,就像打字机一样。
谢谢
最佳答案
您需要使用 view.append("")
它将新文本附加到现有文本。
试试这个代码:
int i = 0; //declare this globally
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(i != 10) {
text.append(" " + i);
i++;
handler.postDelayed(this, 1000);
}
}
}, 1000);
}
此代码将每隔一秒向 TextView
追加一个新数字,直到达到计数 10。您可以应用相同的逻辑。
[编辑]
试试这个:
String code = "Hello There"; //declare variable globally
int i = 0; //declare globally
TextView view; //declare globally
public void loopCode()
{
view = (TextView) findViewById(R.id.code_txt);
//String s = "";
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(i != code.length()) {
view.append(" " + code.charAt(i));
i++;
handler.postDelayed(this, 1000);
}
}
}, 1000);
}
}
不要忘记全局声明 int i = 0
和 String code = "Hello There"
。
关于java - view.setText 发生在循环之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442679/