Кнопка переключения с поведением переключателя - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть набор кнопок-переключателей в относительной раскладке.

Пользователь должен иметь возможность выбирать только одну кнопку-переключатель за раз.

Я попробовал следующее ссылка но ни один из них, похоже, не работает.

Есть идеи, как этого достичь?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Пользователь должен иметь возможность выбирать только одну переключающую кнопку за раз.

Код, доступный в выбранном ответе по указанной вами ссылке, делает то же самоеработа.Чтобы визуализировать это, измените код.

В XML

В ToggleButton измените android:textOn и android:textOff на «вкл» и «выкл» (только дляпример).Ваш XML-файл должен выглядеть следующим образом:

<RadioGroup android:id="@+id/toggleGroup"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="24dp"
    android:orientation="horizontal"
    >

    <ToggleButton android:id="@+id/btn1"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:textSize="14sp"
        android:textOn="on"
        android:textOff="off"
        android:onClick="onToggle"
        android:checked="true"
        />
    <ToggleButton android:id="@+id/btn2"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:textSize="14sp"
        android:textOn="on"
        android:textOff="off"
        android:checked="false"
        android:onClick="onToggle"
        />
</RadioGroup>

Это должно выглядеть следующим образом:

Screenshot1

В файле Java

В своей деятельности напишите этот код:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ((RadioGroup) findViewById(R.id.toggleGroup)).setOnCheckedChangeListener(ToggleListener);
}

static final RadioGroup.OnCheckedChangeListener ToggleListener = new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(final RadioGroup radioGroup, final int i) {
        for (int j = 0; j < radioGroup.getChildCount(); j++) {
            final ToggleButton view = (ToggleButton) radioGroup.getChildAt(j);
            view.setChecked(view.getId() == i);
        }
    }
};

public void onToggle(View view) {
    ((RadioGroup)view.getParent()).check(view.getId());
    // write your specific code here ..
    Toast.makeText(this, "Toggle button clicked", Toast.LENGTH_SHORT).show();
}

Если вы нажмете «выкл», когда другой (кнопка переключения) «включен», «выкл» изменится на «на 'и наоборот.Таким образом, пользователь может выбрать только одну кнопку переключения одновременно.Если одна кнопка переключения включена, другая всегда будет отключена.

0 голосов
/ 25 сентября 2018

Это не работает, вероятно, из-за того, что все RadioButton не сгруппированы вместе из-за некоторого просмотра между ними.

RadioButton должен быть прямым потомком RadioGroup, в противном случае группировка не работает.

...