Android:以编程方式为RippleDrawable设置转角半径

时间:2015-10-09 20:16:04

标签: android

我正在尝试创建一个分段按钮控件,我为每个段使用了一个drawable。

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="@color/search_filters_selected" />
        </shape>
    </item>
    <item>
        <shape
            android:padding="10dp"
            android:shape="rectangle">
            <solid android:color="@color/search_filters_unselected" />
            <stroke
                android:width="1dp"
                android:color="@color/search_filters_selected" />
        </shape>
    </item>
</ripple>

然后,根据它是第一个,最后一个还是中间,我使用setCornerRadii将角半径设置为左角,右角或无角。

问题是我试图在视图中显示涟漪效果,我无法做到这样,涟漪效果受到圆角的限制,它总是被绘制到原始矩形{{{ 3}}

我尝试将相同的角半径设置为RippleDrawable的蒙版,或者使用 {-1}}在图层列表中而不是<item android:drawable="?android:selectableItemBackground" />,但结果是相同的。有谁知道怎么做才能使波纹达到新的界限?

1 个答案:

答案 0 :(得分:3)

解决方案,如果它对任何人都有用,那就是使用没有蒙版的纹波,但也可以使用设定的圆角半径(任何一个,它将在以后更新)

所以我用了

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#625505" />
            <corners android:radius="1dp"/>
        </shape>
    </item>
    <item>
        <shape
            android:padding="10dp"
            android:shape="rectangle">
            <solid android:color="@color/search_filters_selected" />
            <stroke
                android:width="1dp"
                android:color="@color/search_filters_selected" />
        </shape>
    </item>
</ripple>

最后让它发挥作用