禁用单击布局中的RadioGroup

时间:2018-05-31 05:27:12

标签: android onclicklistener android-relativelayout android-radiobutton android-radiogroup

我想禁用置于相对布局内的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 :(得分:1)

添加binding.questionLayout.radio_group.setEnabled(false)

答案 1 :(得分:1)

我根据您的要求做了一个演示&amp;这就是你需要的,

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启用状态..

答案 2 :(得分:0)

请告诉我你做了什么但是请尝试按照它的帮助方式,

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

在上面的方法中,传递你的无线电组ID并启用你想要的禁用模式,