我在我的代码中使用了一个复选框,当它选中它时会显示textview和editText,但是如果我取消选中de复选框,它们将继续显示而不是消失。
以下是代码:
final CheckBox save = (CheckBox) findViewById(R.id.checkbox);
save.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks, depending on whether it's now checked
if (((CheckBox) v).isChecked()) {
nameText.setVisibility(1);
editName.setVisibility(1);
} else {
nameText.setVisibility(0);
editName.setVisibility(0);
}
}
});
在相对布局中的部分xml:
<LinearLayout android:id="@+id/linearLayout3"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below = "@+id/linearLayout2">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name"
android:visibility="invisible"/>
<EditText android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="invisible"/>
<CheckBox android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save" />
</LinearLayout>
当我取消选中复选框时,我该怎么做才能使textView和EditText消失?
谢谢!
答案 0 :(得分:14)
使用View.VISIBLE
,View.INVISIBLE
,View.GONE
来控制可见性(而不是0&amp; 1)。
答案 1 :(得分:6)
两件事:
您应该使用setOnCheckedChangeListener()
,这会让您的生活更轻松。
您应该使用View.GONE和View.VISIBLE代替setVisibility()
的整数。
答案 2 :(得分:2)
问题出在这一部分:
// Perform action on clicks, depending on whether it's now checked
if (((CheckBox) v).isChecked()) {
nameText.setVisibility(1);
editName.setVisibility(1);
} else {
nameText.setVisibility(0);
editName.setVisibility(0);
}
你不应该使用整数值,而是使用视图类提供的常量
//对点击执行操作,具体取决于现在是否已选中 if(((CheckBox)v).isChecked()){
nameText.setVisibility(View.VISIBLE);
editName.setVisibility(View.VISIBLE);
} else {
nameText.setVisibility(VIEW.INVISIBLE);
editName.setVisibility(VIEW.INVISIBLE);
}
而不是隐形你也可以使用GONE。那么你的隐形textedit在布局中不需要空间
如果您检查API,您会看到1不是有效参数: