如何在android中隐藏动态创建的EditText框?

时间:2015-02-23 09:56:49

标签: android android-edittext

我想要一个出勤加上任务系统。为此,我使用了复选框和线性布局。线性布局用于动态添加编辑文本框。选中复选框后,将显示一个新文本字段,当取消选中该文本字段时,必须隐藏文本字段。我使用了类似的部分代码:

    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;

现在,当我选中复选框时,我可以轻松获得编辑文本字段,但在取消选中时,编辑文本字段不会隐藏。我该如何解决?

1 个答案:

答案 0 :(得分:0)

这是因为每次单击某个复选框时,您都在创建新的EditText。您正试图隐藏甚至尚未显示/添加的EditText。知道了!

尝试将EditText tv = new EditText(this); editText作为类变量,在onCreate中创建它。然后你可以在需要时隐藏/显示它。

它看起来像下面的代码。

EditText tv;
onCreate(.......){
..............

tv = new EditText(this);
..............
}

然后在tv方法中使用此onCheckBoxClicked,而不是在此方法中创建一个。{/ p>