Видимость Android выходит с флажком

Я использую флажок в своем коде, что, когда его проверенное он делает textview и editText visibles, но если я снял флажок с de флажком, они продолжают быть видимыми вместо dissapear.

Вот код:

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 dissapear, когда я снял флажок с флажком?

Спасибо!

7
задан fxi 20 May 2010 в 15:27
поделиться

3 ответа

Используйте View.VISIBLE , View.INVISIBLE , View.GONE для управления видимостью (вместо 0 и 1).

14
ответ дан 6 December 2019 в 08:14
поделиться

Две вещи:

  1. Вы должны использовать setOnCheckedChangeListener(), что сделает вашу жизнь проще.

  2. Вы должны использовать View.GONE и View.VISIBLE вместо целых чисел для setVisibility().

6
ответ дан 6 December 2019 в 08:14
поделиться

проблема в этой части:

 // 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);

                }

Вы не должны использовать целочисленные значения, а вместо этого использовать константы, предоставляемые классом view

// Выполнять действия при щелчках, в зависимости от того, установлен ли он сейчас if (((CheckBox)v).isChecked()) {

                nameText.setVisibility(View.VISIBLE);
                editName.setVisibility(View.VISIBLE);

            } else {

                nameText.setVisibility(VIEW.INVISIBLE);
                editName.setVisibility(VIEW.INVISIBLE);

            }

вместо невидимого вы также можете использовать GONE. тогда вашему невидимому текстовому редактору не нужно место в макете

, если вы проверите API, вы увидите, что 1 не является допустимым параметром:

2
ответ дан 6 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: