Как сделать так, чтобы кнопка оставалась выделенной даже после отпускания? - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь удерживать кнопку нажатой после того, как пользователь ее выберет.Моя программа представляет собой тест из 10 вопросов, где, если пользователь выбирает параметр и затем возвращается к этому вопросу, он должен отображаться как выбранный.

Я не могу понять, как отобразить нажатие кнопки при переключении между вопросами.

mAButton.setOnClickListener(new View.OnClickListener() {
    @Override
        public void onClick(View v) {
            Log.i(TAG, "A Button Clicked");
            answers[questionIndex] = "Question: " + questionIndex + ", Answer: A";
            Toast t;
            t = Toast.makeText(MainActivity.this, R.string.recorded_toast, Toast.LENGTH_SHORT);
            t.show();
        }
});

Это пример onClick, который я имею для одного из ответов(У меня 5 кнопок для ответов).Я хочу, чтобы, если пользователь выбрал этот ответ, кнопка оставалась нажатой до тех пор, пока он не выберет другой ответ.Я пробовал кое-что из того, что видел в Интернете, но пока ничего не работает.

Редактировать: Каждый вопрос с несколькими вариантами ответов с 5 ответами!

Ответы [ 3 ]

0 голосов
/ 02 февраля 2019

Использовать радиогруппу.И заполните его ToggleButton (выглядит ближе всего к обычным кнопкам). Еще один ответ, который показывает, как установить это Затем вы можете получить идентификатор кнопки ToggleButton, которая была нажата левой кнопкой мыши, используя «radioGroup.getCheckedRadioButtonId ();» Как проверить флажок

0 голосов
/ 02 февраля 2019

Если в списке ответов разрешено проверять один ответ, необходимо использовать RadioButtons

Если разрешено проверять несколько ответов, необходимо использовать CheckBoxes или ToggleButtons

Ниже приведен фрагмент использования ToggleButtons, который имитирует кнопку при нажатии

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/select"
        android:textOff="Unselected"
        android:textOn="Selected" />

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/select"
        android:textOff="Unselected"
        android:textOn="Selected" />

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/select"
        android:textOff="Unselected"
        android:textOn="Selected" />

    <ToggleButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/select"
        android:textOff="Unselected"
        android:textOn="Selected" />
</LinearLayout>

и создает рисунок для выделения фона

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/checked_button" android:state_checked="true" />
    <item android:drawable="@color/unchecked_button" android:state_checked="false" />
</selector>

цвета

<resources>
    <?xml version="1.0" encoding="utf-8"?>
    ...
    <color name="checked_button">#989898</color>
    <color name="unchecked_button">#f8f8f8</color>

</resources>

Java:

ToggleButton button1 = findViewById(R.id.btn1);
ToggleButton button2 = findViewById(R.id.btn2);
ToggleButton button3 = findViewById(R.id.btn3);
ToggleButton button4 = findViewById(R.id.btn4);

button1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            // Button1 is checked
        } else {
            // Button1 is unchecked
        }
    }
});

enter image description here

0 голосов
/ 02 февраля 2019

Похоже, вы должны использовать RadioButton s внутри RadioGroup .

Подробнее см. руководство в документации .

Если это не поможет вам решить вашу проблему, уточните ваш вопрос .

...