我正在尝试创建一个重复文本应用程序。因此,我使用for
循环重复文本并将其显示在textview
中。
当我按下一个按钮时,我希望它在循环运行时生成文本多次。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
enterText = findViewById(R.id.editText);
repeatText = findViewById(R.id.repeatTime);
genTxt = findViewById(R.id.genText);
genrate = findViewById(R.id.generate);
reset = findViewById(R.id.reset);
copy = findViewById(R.id.copyButton);
share = findViewById(R.id.shareButton);
genrate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Storing text in Gen Text Area
String txt = enterText.getText().toString().trim();
//Storing Repeat value
String repeats = repeatText.getText().toString().trim();
int repealVal = Integer.parseInt(repeats);
for(int i=1;i<=repealVal;i++){
genTxt.setText(txt);
Log.d("tets","loop "+i+txt);
}
}
});
}
public void reset(View view){
enterText.setText("");
repeatText.setText("");
genTxt.setText("");
}
运行它时,我只能在textview
中获得一次文本。
答案 0 :(得分:4)
尝试将您的onClick
方法更改为以下内容:
genrate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Storing text in Gen Text Area
String txt = enterText.getText().toString().trim();
//Storing Repeat value
String repeats = repeatText.getText().toString().trim();
int repealVal = Integer.parseInt(repeats);
for(int i=1;i<=repealVal;i++){
genTxt.setText(genTxt.getText() + txt);
Log.d("tets","loop "+i+txt);
}
}
});
请注意,在循环中,您仅切换文本,而不添加文本。
要进一步优化解决方案,您应该考虑使用。append()
而不是.setText()
答案 1 :(得分:0)
这里您一次又一次将文本设置为相同的TextView
。
如果要动态生成多个TextView
,可以尝试以下解决方案。
在您要添加文本的xml
中的根布局中提供一个ID。在这里,我正在使用LinearLayout
。如下所示将其添加到您的代码中:
LinearLayout linearLayout = findViewById(R.id.ll) //ll is the id of LinearLayout
然后将其添加到您的onclick
TextView txtView;
for(int i = 1; i <= repealVal; i++) {
txtView = new TextView(MainActivity.this);
txtView.setText(txt);
linearLayout.addView(txtView);
}