【问题标题】:Android visibility issue with checkbox复选框的Android可见性问题
【发布时间】:2011-02-21 22:41:06
【问题描述】:

我在我的代码中使用了一个复选框,当它被选中时,它会显示一个 textview 和一个 editText,但如果我取消选中 de checkbox,它们会继续可见而不是消失。

代码如下:

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 消失?

谢谢!

【问题讨论】:

  • 我同意 Roflcoptr 但最近我一直在尝试一些相关的问题,发现如果你(出于某种疯狂的原因)想要使用整数值,它们不是 0 和 1,而是: 0 - 可见 4 - 不可见 8 - 消失 不知道为什么这些是 4 的倍数。

标签: android layout checkbox view visibility


【解决方案1】:

使用View.VISIBLEView.INVISIBLEView.GONE 来控制可见性(而不是 0 和 1)。

【讨论】:

    【解决方案2】:

    两件事:

    1. 你应该使用setOnCheckedChangeListener(),这会让你的生活更轻松。

    2. 对于setVisibility(),您应该使用 View.GONE 和 View.VISIBLE 而不是整数。

    【讨论】:

      【解决方案3】:

      问题出在这部分:

       // 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 来代替隐形。那么你的隐形文本编辑不需要布局中的空间

      如果您检查API,您会发现 1 不是有效参数:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-14
        • 2021-07-02
        • 1970-01-01
        • 2011-01-31
        • 2011-11-02
        • 2018-07-17
        • 1970-01-01
        • 2012-03-20
        相关资源
        最近更新 更多