Для внешнего вида и интервала мне нужно использовать радиокнопку в качестве кнопки переключения, но для жизни я не могу заставить эту тупую вещь изменить свое состояние. Кто-нибудь знает, как я могу заставить одну радиокнопку переключаться между проверенным состоянием? Я не знаю, возможно, есть способ обмануть его, используя Radio Group или некоторую комбинацию операторов if/else (хотя, когда я пробовал это, казалось, что это было проверено, хотя это не так). Или, возможно, сделать кнопку-переключатель похожей на радиокнопку?
Как я могу использовать радиокнопку в качестве переключателя (Android)?
comment
Для простого способа проверьте этот ответ: stackoverflow.com/a/47023965/3758439 Также можно изменить квадрат флажка кнопку на круглую с помощью xml, на SO есть такие решения.
- person George   schedule 30.10.2017
Ответы (2)
RadioButton имеет несколько методов, позволяющих изменять его состояние.
Название виджета, который вы называете «Кнопка переключения», называется CompoundButton по системе. RadioButton фактически расширяет CompoundButton. Таким образом, он имеет доступ ко всем тем же методам.
person
FoamyGuy
schedule
11.05.2012
Однако, согласно странице разработчика, использование toggle() с переключателем только проверит его, а не снимет флажок, если он уже установлен. Мне еще предстоит попробовать это, и я надеялся на другую идею или около того, прежде чем я это сделал.
- person rphello101; 21.05.2012
Хорошо, но он предоставляет как getChecked(), так и setChecked(boolean b), вы можете использовать их комбинацию для переключения независимо от состояния... с точки зрения Android RadioButton IS A Toggle Button. он сделает все, что может кнопка-переключатель.
- person FoamyGuy; 21.05.2012
Я пробовал все возможные комбинации, о которых только мог подумать, и не могу заставить их переключаться между состояниями. Он либо останется отмеченным, либо позволит мне снять его, но не перепроверять.
- person rphello101; 30.05.2012
Просто создайте свой собственный класс android.support.v7.widget.AppCompatRadioButton
и переопределите метод с именем toggle()
.
Это делает трюк:
@Override
public void toggle(){
setChecked(!isChecked());
}
person
Palm
schedule
07.03.2018