Как предотвратить проверку CheckBox?
Я хотел бы иметь возможность запретить выбор CheckBox (или установить его обратно на невыбранный), при нажатии кнопки CheckBox
Как я могу это достичь?
Я не хочу просто отключать этот флажок. Я хочу, чтобы пользователь подумал, что это можно проверить, но когда пользователь попытается проверить его... тогда я (возможно) предотвращу проверку флажка и отображение сообщения.
Ответы
Ответ 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 не работает для меня.