hide layout checkbox is checked android

1.2k views Asked by At

I am trying to simply hide a linear layout if a checkbox is clicked. I have defined function and onClick attribute calls it which is also tested with toast but when I try hiding the layout, it doesn't do anything.

The 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"
         />

In 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

There are 2 answers

0
Evan Bashir On

You should be using onCheckedChangeListener as I don't think it registers as an onClick- but an onCheck.

Android: checkbox listener

0
Mahesh Suthar On
**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");
            }
        }
    });
}

}