如何在Android 4.4.4中删除RadioButton圈

wvi*_*ana 7 android android-layout

我制作了一个自定义的RadioButton,在Android 5.0设备中看起来如下.

在此输入图像描述

这些RadioButtons是动态创建的,如以下方法所示.因此第一种方法redioButtonPresenterApparence设置其外观去除圆(设置buttonDrwable.第二种方法在以后设置的按钮的背景.

private void radioButtonPresenterApparence(RadioButton presenter, int icon) {
    Drawable drawable = getResources().getDrawable(icon);
    presenter.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
    presenter.setButtonDrawable(null);
    presenter.setGravity(Gravity.CENTER);
}

private void updateButtonsBackground(){
    int childCount = getChildCount();
    BackgroundSelector bgSelector = new BackgroundSelector(childCount);
    for(int i = 0; i < childCount; i++){
        View rb = getChildAt(i);
        rb.setBackgroundResource( bgSelector.getBackgroundResource(i) );
        rb.requestLayout();
    }

    requestLayout();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在三星Android 4.4.4设备上测试相同(不确定其他制造商),它显示如下.

在此输入图像描述

PS:这是一个创建RadioButton的代码.您可以使用以下方法检查它:

private void addPresenter(int icon){
    RadioButton presenter = new RadioButton(getContext());  //Create new RadioButton
    radioButtonPresenterApparence(presenter, icon);         //Set icon and configure aparence
    addView(presenter);                                     //Add new button to Selector
    presenterParentAparance(presenter);                     //Config button inside parent
    requestLayout();                                        //Request layout update to Selector
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*jan 10

在layout.xml中找到你的单选按钮并给它们:

android:button="@null"
Run Code Online (Sandbox Code Playgroud)

presenter.setButtonDrawable(null); 除了这实际上有效之外,这应该做同样的事情

编辑:

如果是代码创建按钮,请使用:

presenter.setButtonDrawable(new StateListDrawable());
Run Code Online (Sandbox Code Playgroud)

实际上有帮助,因为它相当于

android:button="@null"
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,请尝试以下方法:presenter.setButtonDrawable(new StateListDrawable());这等效于android:button =“ @ null” (2认同)