复选框按钮设置为null时的波纹效果位置

191*_*11z 2 android android-layout

复选框按钮设置为null时的涟漪效应问题:

使用风格

<style name="MyRow">
<item name="android:button">@null</item>
<item name="android:drawableRight">@drawable/abc_btn_radio_material</item>
<item name="android:drawableEnd">@drawable/abc_btn_radio_material</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:padding">@drawable/dafaultPadding</item>
Run Code Online (Sandbox Code Playgroud)

这是包含单选按钮的单选组。

<RadioGroup android:layout_height="wrap_content" android:layout_width="match_parent">

<android.support.v7.widget.AppCompatRadioButton style="@style/MyRow"
    android:id="@+id/one"
    android:text="@string/someText"
    />

<android.support.v7.widget.AppCompatRadioButton style="@style/MyRow"
    android:id="@+id/two"
    android:text="@string/someText"
    />

<android.support.v7.widget.AppCompatRadioButton style="@style/MyRow"
    android:id="@+id/three"
    android:text="@string/someText"
    />

</RadioGroup>
Run Code Online (Sandbox Code Playgroud)

当android:button属性设置为可绘制时,波纹动画将按预期工作。如果为null,则在棉花糖(行中间的波纹)上具有此行为。

点击这里查看图片

在棒棒糖中可以正常工作,除了它没有边界而且波纹会扩展到整个窗口。

解决此问题的唯一方法是为单选按钮左侧的每个包含textview的行创建自定义视图。但是以这种方式,我将不得不创建一个类似怪物的控制器(在按下文本视图时选择复选框),而我将失去广播组的所有优势。

在此处输入图片说明

rep*_*tch 5

尝试对单选按钮使用以下样式:

<style name="RadioButton">
    <item name="android:background">?selectableItemBackground</item>
    <item name="android:button">@null</item>
    <item name="android:drawableRight">?android:attr/listChoiceIndicatorSingle</item>
    <item name="android:drawablePadding">@dimen/yourDrawablePadding</item>
    <item name="android:padding">@dimen/buttonPadding</item>
</style>
Run Code Online (Sandbox Code Playgroud)

首先,?selectableItemBackground将解决您的涟漪问题。

也可以?android:attr/listChoiceIndicatorSingle用作可绘制对象,以在选中/取消选中单选按钮上实现漂亮的材质动画。

您可以看到以下区别(Google Pixel XL,7.1.2):

在此处输入图片说明