隐藏布局复选框已检查android

时间:2015-06-17 17:41:46

标签: java android android-layout android-checkbox

如果单击复选框,我只想隐藏线性布局。我已经定义了函数和onClick属性调用它也用toast测试但是当我尝试隐藏布局时,它没有做任何事情。

layout.xml:

<CheckBox
        android:id="@+id/cbguest"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.9"
        android:onClick="itemClicked"
         />

在MainActivity.java中

int[] i = {0};
public void itemClicked(View v) {
    LinearLayout layoutguest1 = (LinearLayout) findViewById(R.id.guestlayout);

    if (lns[0]%2 == 0) {
        Toast.makeText(getApplicationContext(),"Visible", Toast.LENGTH_SHORT).show();
        layoutguest1.setVisibility(View.VISIBLE);
        lns[0]+=1;
    }
    if (lns[0]%2 != 0) {
        layoutguest1.setVisibility(View.GONE);
        Toast.makeText(getApplicationContext(),"Gone", Toast.LENGTH_SHORT).show();
        lns[0]+=1;
    }

}

2 个答案:

答案 0 :(得分:1)

**activity_main.xml
put this code in activity_main.xml file**
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.demo.MainActivity" >

<LinearLayout
    android:id="@+id/layoutLogin"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="UserName" />

        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Password" />

        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>

<CheckBox
    android:id="@+id/chkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="Hide" />

</RelativeLayout>


**MainActivity.java
put this code in MainActivity.java file**

public class MainActivity extends Activity {

private LinearLayout layoutLogin;
private CheckBox chkBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    chkBox = (CheckBox) findViewById(R.id.chkBox);
    layoutLogin = (LinearLayout) findViewById(R.id.layoutLogin);

    chkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
 boolean         isChecked) 
        {
            // TODO Auto-generated method stub
            if(isChecked)
            {
                layoutLogin.setVisibility(View.GONE);
                chkBox.setText("UnHide");
            }
            else
            {
                layoutLogin.setVisibility(View.VISIBLE);
                chkBox.setText("Hide");
            }
        }
    });
}

}

答案 1 :(得分:0)

您应该使用onCheckedChangeListener因为我认为它不会注册为onClick - 而是onCheck

Android: checkbox listener