Radio Button is only partially checked

2019-02-16 15:07发布

问题:

I know this sound weird so here is the picture.

It hold the correct value. The correct radiobutton is (partially) selected. All logic in the OnCheckedChangeListener is executed correctly. I'm completly stunned. Why is the radio button not fully checked?

Only thing I can think of is that i'm using Rx2Firebase

periodRetriever = FirebaseHelper.getInstance(getContext()).getPeriod()
        .defaultIfEmpty(0)
        .distinctUntilChanged()
        .subscribe(new Consumer<Integer>() {
            @Override
            public void accept(@NonNull Integer headerType) throws Exception {
                getRadioViewChecked(headerType).setChecked(true);
            }
        });

EDIT1

Marcos suggestion I can't see the white tick. This is not the case.

EDIT2

Layout:

<RadioGroup
    android:id="@+id/rgPeriod"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rbMonth"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="@string/month" />

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rbWeek"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="@string/week" />

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/rb4Weeks"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="@string/four_weeks" />


</RadioGroup>

回答1:

Looks like an Animation Bug. When using a CompoundButton on a Fragment inside a ViewPager the drawable state is not set correctly.

This happens also for Checkboxes as seen here: Android Nougat: Why do checkboxes on Fragment have incomplete state when selected programmatically (but look fine on Lollipop).

Calling jumpDrawablesToCurrentState() just after calling RadioGroup.check(id) or Checkbox.setChecked(true) seems to fix the problem (thx @Dalmas)



回答2:

Your theme is Dark and you cant see the white tick, you need to change it to another color.



回答3:

change background color from white to another color it will appear



回答4:

Try changing your Theme or the color attributes of your radio button



回答5:

Have you tried using RadioButton instead of android.support.v7.widget.AppCompatRadioButton i think that might solve the issue

On the other hand, here you can find a doc of how to style RadioButtons

http://www.materialdoc.com/radio-button/

  1. Declare custom style in your styles.xml file.

<style name="MyRadioButton" parent="Theme.AppCompat.Light"> <item name="colorControlNormal">@color/indigo</item> <item name="colorControlActivated">@color/pink</item> </style>

  1. Apply this style to your RadioButton via android:theme attribute.

`

   <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:text="Radio Button"
        android:theme="@style/MyRadioButton"/>

source: https://stackoverflow.com/a/35044856/4492504