为Android Appcompat单选按钮更改android Ripple效果中心位置

时间:2016-04-25 06:11:54

标签: android radio-button android-appcompat

我尝试使用AppCompactRadioButton在右侧按下RTL电台-Put收音机 - 我用android:drawableRight实现了这个并设置android:button="@null"所以我的最终视图是我想要的和最终代码是这样的:

<android.support.v7.widget.AppCompatRadioButton
            android:id="@+id/radio_man"
            style="@style/app_font"
            android:layout_width="0dp"
            android:layout_height="@dimen/edit_text_height"
            android:layout_weight="1"
            android:button="@null"
            android:drawableRight="@drawable/form_radiobutton"
            android:minHeight="33dp"
            android:onClick="onSexRadioButtonClicked"
            android:text="@string/hint_man" />

wrong ripple on radio button

但我的问题是如何改变涟漪效应中心位置,因为我将按钮设置为null,涟漪效果中心poisiton位于单选按钮的中心,如上图所示,并且用户不希望看到涟漪。我试图将layout_direction设置为RTL,但没有修复。

我必须提一下,我也尝试用下面的波纹绘制解决这个问题,但没有任何改变,问题仍然存在。

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/transparent">
<item>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:drawable="@drawable/btn_radio_activated"
            android:state_checked="true" />
        <item android:drawable="@drawable/btn_radio_deactive" />
    </selector>
</item>
</ripple>

长话短说,有没有想法改变Android Appcompat单选按钮的android Ripple效果中心位置?

2 个答案:

答案 0 :(得分:1)

我可以通过将RadioButton的背景更改为透明来成功擦除涟漪效果,如下所示:

  android:background="@android:color/transparent"

我还没试过,但我想你可以设置一个带左边填充的drawable来克服这个问题。

答案 1 :(得分:0)

我认为您正在寻找的是

android:background="?selectableItemBackground"

在您的RadioButtons中。那会覆盖错误的涟漪效应。