Как я могу использовать радиокнопку в качестве переключателя (Android)?

Для внешнего вида и интервала мне нужно использовать радиокнопку в качестве кнопки переключения, но для жизни я не могу заставить эту тупую вещь изменить свое состояние. Кто-нибудь знает, как я могу заставить одну радиокнопку переключаться между проверенным состоянием? Я не знаю, возможно, есть способ обмануть его, используя Radio Group или некоторую комбинацию операторов if/else (хотя, когда я пробовал это, казалось, что это было проверено, хотя это не так). Или, возможно, сделать кнопку-переключатель похожей на радиокнопку?


person rphello101    schedule 11.05.2012    source источник
comment
Для простого способа проверьте этот ответ: stackoverflow.com/a/47023965/3758439 Также можно изменить квадрат флажка кнопку на круглую с помощью xml, на SO есть такие решения.   -  person George    schedule 30.10.2017


Ответы (2)


RadioButton имеет несколько методов, позволяющих изменять его состояние.

toggle()

setChecked(boolean b)

Название виджета, который вы называете «Кнопка переключения», называется CompoundButton по системе. RadioButton фактически расширяет CompoundButton. Таким образом, он имеет доступ ко всем тем же методам.

person FoamyGuy    schedule 11.05.2012
comment
Однако, согласно странице разработчика, использование toggle() с переключателем только проверит его, а не снимет флажок, если он уже установлен. Мне еще предстоит попробовать это, и я надеялся на другую идею или около того, прежде чем я это сделал. - person rphello101; 21.05.2012
comment
Хорошо, но он предоставляет как getChecked(), так и setChecked(boolean b), вы можете использовать их комбинацию для переключения независимо от состояния... с точки зрения Android RadioButton IS A Toggle Button. он сделает все, что может кнопка-переключатель. - person FoamyGuy; 21.05.2012
comment
Я пробовал все возможные комбинации, о которых только мог подумать, и не могу заставить их переключаться между состояниями. Он либо останется отмеченным, либо позволит мне снять его, но не перепроверять. - person rphello101; 30.05.2012

Просто создайте свой собственный класс android.support.v7.widget.AppCompatRadioButton и переопределите метод с именем toggle().

Это делает трюк:

@Override
public void toggle(){
  setChecked(!isChecked());
}
person Palm    schedule 07.03.2018