如何在 android 中隐藏动态创建的 EditText 框?
How to hide a dynamically created EditText box in android?
我想做一个考勤加任务系统。为此,我使用了复选框和线性布局。线性布局用于动态添加编辑文本框。当一个复选框被选中时,一个新的文本字段是可见的,当它被取消选中时,文本字段必须被隐藏。我使用了这样的部分代码:
public void onCheckBoxClicked(View v) {
boolean checked = ((CheckBox) v).isChecked();
EditText tv;
tv = new EditText(this);
tv.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT));
tv.setText(one.getText().toString()+ "'s task today?");
tv.setBackgroundColor(0xff66ff66); // hex color 0xAARRGGBB
tv.setPadding(20, 20, 20, 20);// in pixels (left, top, right, bottom)
switch (v.getId()) {
case R.id.checkBox1:
if(checked) {
list.addView(tv);
Toast.makeText(getApplicationContext(), one.getText().toString() + " is present", Toast.LENGTH_SHORT).show();
}
if(!checked) {
tv.setVisibility(EditText.GONE); //problem exists here--is not executing
Toast.makeText(getApplicationContext(), one.getText().toString() + " is absent", Toast.LENGTH_SHORT).show();
}
break;
现在,当我选中该框时,我可以轻松获得一个编辑文本字段,但取消选中它时,编辑文本字段不会隐藏。我该如何解决?
这是因为每次单击某个复选框时您都在创建新的 EditText。您正在尝试隐藏甚至 shown/added 还没有的 EditText。明白了!!
尝试将您的 EditText tv = new EditText(this);
editText 作为 class 变量,在 onCreate 中创建它。然后你可以在需要的时候hide/show。
它看起来像下面的代码。
EditText tv;
onCreate(.......){
..............
tv = new EditText(this);
..............
}
然后在您的 onCheckBoxClicked
方法中使用此 tv
而不是在此方法中创建一个。
我想做一个考勤加任务系统。为此,我使用了复选框和线性布局。线性布局用于动态添加编辑文本框。当一个复选框被选中时,一个新的文本字段是可见的,当它被取消选中时,文本字段必须被隐藏。我使用了这样的部分代码:
public void onCheckBoxClicked(View v) {
boolean checked = ((CheckBox) v).isChecked();
EditText tv;
tv = new EditText(this);
tv.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT));
tv.setText(one.getText().toString()+ "'s task today?");
tv.setBackgroundColor(0xff66ff66); // hex color 0xAARRGGBB
tv.setPadding(20, 20, 20, 20);// in pixels (left, top, right, bottom)
switch (v.getId()) {
case R.id.checkBox1:
if(checked) {
list.addView(tv);
Toast.makeText(getApplicationContext(), one.getText().toString() + " is present", Toast.LENGTH_SHORT).show();
}
if(!checked) {
tv.setVisibility(EditText.GONE); //problem exists here--is not executing
Toast.makeText(getApplicationContext(), one.getText().toString() + " is absent", Toast.LENGTH_SHORT).show();
}
break;
现在,当我选中该框时,我可以轻松获得一个编辑文本字段,但取消选中它时,编辑文本字段不会隐藏。我该如何解决?
这是因为每次单击某个复选框时您都在创建新的 EditText。您正在尝试隐藏甚至 shown/added 还没有的 EditText。明白了!!
尝试将您的 EditText tv = new EditText(this);
editText 作为 class 变量,在 onCreate 中创建它。然后你可以在需要的时候hide/show。
它看起来像下面的代码。
EditText tv;
onCreate(.......){
..............
tv = new EditText(this);
..............
}
然后在您的 onCheckBoxClicked
方法中使用此 tv
而不是在此方法中创建一个。