Подтвердить что ты не робот

Как предотвратить проверку CheckBox?

Я хотел бы иметь возможность запретить выбор CheckBox (или установить его обратно на невыбранный), при нажатии кнопки CheckBox

Как я могу это достичь?

Я не хочу просто отключать этот флажок. Я хочу, чтобы пользователь подумал, что это можно проверить, но когда пользователь попытается проверить его... тогда я (возможно) предотвращу проверку флажка и отображение сообщения.

4b9b3361

Ответ 1

вы можете сделать что-то вроде этого:

cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){

    @Override
    public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) {
    if(isChecked){
        cb.setChecked(false);
        // Code to display your message.
        }
    }
});

Ответ 2

Просто добавьте атрибут android:clickable="false" в макет xml.

Итак, для меня у меня есть:

    <CheckBox
        android:id="@+id/server_is_online"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checked="true"
        android:clickable="false"
        android:text="@string/server_is_online"
        android:textSize="23sp" />

и он отлично работает.

Нет, вероятно, не так, как вы должны использовать флажок, но я использую это как грязный взлом на стадии прототипирования вместо того, чтобы иметь красивую иконку с зеленым тиком на все хорошее, и злой красный крест для конца света:)

Ответ 3

Просто установите его, чтобы он не был нажат

cb.setClickable(false);

Ответ 4

Попробуйте выполнить

    CheckBox repeatChkBx =
    ( CheckBox ) findViewById( R.id.repeat_checkbox );
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
           repeatChkBx.setChecked(false); // perform logic of opening message
        }

    }
});

Ответ 5

этот код отлично работает для меня

mCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if ( isChecked==true )
                {
                    buttonView.setChecked(false);
                }
                else
                {
                    buttonView.setChecked(true);
                }

        }

    }); //this code through user cant check box check/uncheck 

Ответ 6

В Android CompoundButton класс perfomClick() переключает проверенное состояние кнопки.

@Override
    public boolean performClick() {
        toggle();

        final boolean handled = super.performClick();
        if (!handled) {
            // View only makes a sound effect if the onClickListener was
            // called, so we'll need to make one here instead.
            playSoundEffect(SoundEffectConstants.CLICK);
        }

        return handled;
    }

Вы можете создать класс, который расширяет CheckBox и переопределяет метод executeClick(), если вы хотите вручную управлять поведением. Потому что clickable = false не работает для меня.