Отключить Нажмите на RadioGroup внутри макета - PullRequest
0 голосов
/ 31 мая 2018

Я хочу отключить клики в RadioGroup, размещенные внутри Относительного макета!Таким образом, мой единственный относительный макет должен быть кликабельным.Я хочу, чтобы при некоторых условиях мой XML был следующим:

   <RelativeLayout
            android:id="@+id/shouldNotPlayLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="40dp"
            android:layout_marginLeft="44dp"
            android:layout_marginRight="44dp"
            android:layout_marginTop="40dp">

            <RadioGroup
                android:id="@+id/radio_group"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:saveEnabled="false">

                <RadioButton
                    android:id="@+id/radio_option_a"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/radio_option_selector"
                    android:button="@null"
                    android:padding="15dp"
                    android:textColor="#161743"
                    android:textSize="14sp"
                    android:textStyle="normal"
                    tools:text="First option"/>

                <RadioButton
                    android:id="@+id/radio_option_b"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:background="@drawable/radio_option_selector"
                    android:button="@null"
                    android:padding="15dp"
                    android:textColor="#161743"
                    android:textSize="14sp"
                    android:textStyle="normal"
                    tools:text="First option"/>

                <RadioButton
                    android:id="@+id/radio_option_c"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:background="@drawable/radio_option_selector"
                    android:button="@null"
                    android:padding="15dp"
                    android:textColor="#161743"
                    android:textSize="14sp"
                    android:textStyle="normal"
                    tools:text="First option"/>
            </RadioGroup>
        </RelativeLayout>

Я прекращаю щелчки в группе радио как:

        binding.questionLayout.radioOptionA.setEnabled(false);
        binding.questionLayout.radioOptionB.setEnabled(false);
        binding.questionLayout.radioOptionC.setEnabled(false);

        binding.questionLayout.radioOptionA.setFocusable(false);
        binding.questionLayout.radioOptionB.setFocusable(false);
        binding.questionLayout.radioOptionC.setFocusable(false);

        binding.questionLayout.shouldNotPlayLayout.requestFocus();
        binding.questionLayout.shouldNotPlayLayout.setClickable(true);
        binding.questionLayout.shouldNotPlayLayout.setFocusable(true); 

Проблема, с которой я сталкиваюсьв том, что иногда любая из этих трех радиокнопок может все еще быть активной, и пользователь может щелкнуть любую радиокнопку.Но я хочу отключить щелчок по радиогруппе / кнопке и выполнить щелчок по относительной раскладке!


Может кто-нибудь подсказать какие-либо грубые ошибки, сделанные мной?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Пожалуйста, я даю то, что вы сделали, но затем также, пожалуйста, попробуйте, как это поможет,

private void enableDisbleRadioGroup(RadioGroup groupId, boolean isEnable) {
        for (int i = 0; i < groupId.getChildCount(); i++) {
            groupId.getChildAt(i).setEnabled(isEnable);
        }
    }

В вышеприведенном методе передайте идентификатор вашей группы радиостанций и включите режим отключения, что вы хотите,

0 голосов
/ 31 мая 2018

Я сделал демо с вашим требованием и вот что вам нужно,

private void manageEnableState(boolean isEnable) {
    radioOptionA.setEnabled(isEnable);
    radioOptionB.setEnabled(isEnable);
    radioOptionC.setEnabled(isEnable);

    radioOptionA.setFocusable(isEnable);
    radioOptionB.setFocusable(isEnable);
    radioOptionC.setFocusable(isEnable);

    shouldNotPlayLayout.setClickable(!isEnable);
    shouldNotPlayLayout.setFocusable(!isEnable);
}

Где isEnable используется для установки вашего RadioButton состояния включения ..

0 голосов
/ 31 мая 2018

Добавить binding.questionLayout.radio_group.setEnabled(false)

...