选中复选框后隐藏和显示

时间:2016-02-15 14:39:47

标签: java android checkbox spinner

在我的活动A 中,我有checkboxspinnereditText。如果选中checkbox,则会显示editText并隐藏spinnertextView。否则,它会显示它们。

   public void addListenerOnChk() // for checkbox
    {


        checkBox2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(((CheckBox)v).isChecked())
                {
                    typeProject.setVisibility(View.VISIBLE);
                    project.setVisibility(View.GONE);
                    ProjectName.setVisibility(View.GONE);
                }
                else
                {
                    typeProject.setVisibility(View.GONE);
                    project.setVisibility(View.VISIBLE);
                    ProjectName.setVisibility(View.VISIBLE);
                }

            }

        });

所以这是我的layout

在检查checkbox之前

enter image description here

enter image description here

如果未选中该复选框,如何在复选框下方移动进度条(目前它有一个editText空间)?

如果选中了复选框,如何向上移动复选框并隐藏spinnertext?感谢。

这里我的布局......对不起,它有点长(但我要改变的是id / ProjectName,id / checkbox2和id / editText)。 id / checkbox2和id / editText位于最后两段。

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">


<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout"
    android:background="@mipmap/background_work_details">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ProjectName"
        android:padding="10dp"
        android:text="Project/Service/Training"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="14dp"
        android:layout_y="11dp" />

    <Spinner
        android:layout_width="322dp"
        android:layout_height="41dp"
        android:layout_margin="10dp"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:paddingLeft="20dp"
        android:layout_x="15dp"
        android:layout_y="47dp"
        android:id="@+id/SpinnerProject"
        android:spinnerMode="dropdown" />

    <EditText
        android:layout_width="339dp"
        android:layout_height="156dp"
        android:layout_margin="10dp"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:paddingLeft="20dp"
        android:paddingBottom="80dp"
        android:layout_x="14dp"
        android:layout_y="730dp"
        android:id="@+id/editTextWorkDescription" />

    <SeekBar
        android:layout_width="206dp"
        android:layout_height="wrap_content"
        android:id="@+id/seekBarPercentage"
        android:layout_x="30dp"
        android:layout_y="189dp"
        android:indeterminate="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView5"
        android:padding="10dp"
        android:text="Time In"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="16dp"
        android:layout_y="225dp" />

    <EditText
        android:layout_width="80dp"
        android:layout_height="34dp"
        android:layout_margin="10dp"
        android:focusableInTouchMode="false"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:paddingLeft="20dp"
        android:layout_x="86dp"
        android:layout_y="225dp"
        android:id="@+id/TimeIn" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView4"
        android:padding="10dp"
        android:text="Time Out"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="172dp"
        android:layout_y="225dp" />

    <EditText
        android:layout_width="87dp"
        android:layout_height="34dp"
        android:layout_margin="10dp"
        android:focusableInTouchMode="false"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:paddingLeft="20dp"
        android:layout_x="246dp"
        android:layout_y="225dp"
        android:id="@+id/TimeOut" />

    <Button
        android:layout_width="127dp"
        android:layout_height="63dp"
        android:text="save"
        android:drawableRight="@mipmap/save"
        android:id="@+id/save"
        android:layout_x="217dp"
        android:layout_y="891dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Small Text"
        android:id="@+id/textProgress"
        android:layout_x="257dp"
        android:textColor="@color/red"
        android:layout_y="194dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView7"
        android:padding="10dp"
        android:text="Travel From"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="14dp"
        android:layout_y="262dp" />

    <EditText
        android:layout_width="223dp"
        android:layout_height="85dp"
        android:layout_margin="10dp"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:paddingLeft="20dp"
        android:layout_x="14dp"
        android:layout_y="300dp"
        android:id="@+id/travelFrom" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView15"
        android:padding="10dp"
        android:text="Travel To"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="14dp"
        android:layout_y="390dp" />

    <EditText
        android:layout_width="97dp"
        android:layout_height="35dp"
        android:layout_margin="10dp"
        android:inputType="numberDecimal"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:paddingLeft="15dp"
        android:layout_x="255dp"
        android:layout_y="470dp"
        android:id="@+id/mileage" />

    <EditText
        android:layout_width="222dp"
        android:layout_height="85dp"
        android:layout_margin="10dp"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:paddingLeft="20dp"
        android:layout_x="14dp"
        android:layout_y="423dp"
        android:id="@+id/travelTo" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView16"
        android:padding="10dp"
        android:inputType="numberDecimal"
        android:text="Hotel accomm"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="14dp"
        android:layout_y="550dp"
        android:allowUndo="true" />

    <EditText
        android:layout_width="92dp"
        android:layout_height="34dp"
        android:layout_margin="10dp"
        android:inputType="numberDecimal"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:hint="RM"
        android:paddingLeft="15dp"
        android:layout_x="131dp"
        android:layout_y="554dp"
        android:id="@+id/hotel" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView17"
        android:padding="10dp"
        android:text="Toll"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="222dp"
        android:layout_y="550dp" />

    <EditText
        android:layout_width="187dp"
        android:layout_height="34dp"
        android:layout_margin="10dp"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:hint="RM"
        android:inputType="numberDecimal"
        android:paddingLeft="15dp"
        android:layout_x="163dp"
        android:layout_y="620dp"
        android:id="@+id/business" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView18"
        android:padding="10dp"
        android:text="Business Expenses"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="14dp"
        android:layout_y="620dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView19"
        android:padding="10dp"
        android:text="Mileage"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="268dp"
        android:layout_y="430dp" />

    <EditText
        android:layout_width="92dp"
        android:layout_height="34dp"
        android:layout_margin="10dp"
        android:background="@drawable/round_corner_square"
        android:layout_weight="0.07"
        android:hint="RM"
        android:inputType="numberDecimal"
        android:paddingLeft="15dp"
        android:layout_x="263dp"
        android:layout_y="554dp"
        android:id="@+id/toll" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView20"
        android:padding="10dp"
        android:text="Work Description"
        android:textColor="@color/peru"
        android:layout_alignParentTop="true"
        android:layout_x="14dp"
        android:layout_y="683dp" />

    <CheckBox
        android:layout_width="112dp"
        android:layout_height="53dp"
        android:text="outstation"
        android:id="@+id/checkBox"
        android:textColor="@color/peru"
        android:layout_x="232dp"
        android:layout_y="662dp"
        android:checked="false" />

    <CheckBox
        android:layout_width="112dp"
        android:layout_height="45dp"
        android:text="Others?"
        android:id="@+id/checkBox2"
        android:layout_x="24dp"
        android:textColor="@color/peru"
        android:layout_y="92dp"
        android:checked="false" />

    <EditText
        android:layout_width="296dp"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:visibility="gone"
        android:layout_x="27dp"
        android:layout_y="133dp" />

</AbsoluteLayout>

</ScrollView>

3 个答案:

答案 0 :(得分:0)

您应该使用OnCheckedChangeListener,而不是OnClickListener

这样做

checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if(isChecked)
        {
            typeProject.setVisibility(View.VISIBLE);
            project.setVisibility(View.GONE);
            ProjectName.setVisibility(View.GONE);
        }
        else
        {
            typeProject.setVisibility(View.GONE);
            project.setVisibility(View.VISIBLE);
            ProjectName.setVisibility(View.VISIBLE);
        }
   }
});

答案 1 :(得分:0)

尝试使用OnCheckedChangeListener:

checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
          if(isChecked){
                    typeProject.setVisibility(View.VISIBLE);
                    project.setVisibility(View.GONE);
                    ProjectName.setVisibility(View.GONE);
            }
           else{
                    typeProject.setVisibility(View.GONE);
                    project.setVisibility(View.VISIBLE);
                    ProjectName.setVisibility(View.VISIBLE);
           }
        });

答案 2 :(得分:0)

您的问题是因为absolute_layoutlayout_xlayout_y一起使用,因此所有观看次数都位于 x 的预定义位置y ,无论你删除哪些元素或者你将留下什么元素。

因此,您必须change the layout parameters for the elements不仅要将其设置为VISIBLEGONE,因此完整的解决方案将是:

    checkBox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                typeProject.setVisibility(View.VISIBLE);
                project.setVisibility(View.GONE);
                ProjectName.setVisibility(View.GONE);

                // now settings the new parameters
                AbsoluteLayout.LayoutParams params = ((AbsoluteLayout.LayoutParams) typeProject.getLayoutParams());
                params.x = 100; // the new value
                params.y = 100; // the new value
                typeProject.setLayoutParams(params);
             }
            else{
                typeProject.setVisibility(View.GONE);
                project.setVisibility(View.VISIBLE);
                ProjectName.setVisibility(View.VISIBLE);

                // use the same way here with 'project' and 'ProjectName'
            }
    });