Android:以编程方式为 RippleDrawable 设置圆角半径
Android: Set corner radius for RippleDrawable programmatically
我正在尝试创建分段按钮控件,并且我为每个分段使用了一个可绘制对象。
<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>
然后根据是第一个,最后一个还是中间,我设置圆角半径为左角圆角,右角圆角或none,使用setCornerRadii
.
问题是我试图在视图中显示涟漪效应,但我无法做到这一点,因此涟漪效应以圆角为界,它总是绘制到原始矩形, like this
我试过为 RippleDrawable 的遮罩设置相同的角半径,或者使用
<item android:drawable="?android:selectableItemBackground" />
在图层列表中而不是 <ripple>
,但结果是相同的。有谁知道如何使涟漪达到新的界限?
解决方案,如果对任何人有用,就是使用不带遮罩的波纹,同时设置角半径(任何一个,稍后更新)
所以我用了
<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>
终于开始工作了
我正在尝试创建分段按钮控件,并且我为每个分段使用了一个可绘制对象。
<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>
然后根据是第一个,最后一个还是中间,我设置圆角半径为左角圆角,右角圆角或none,使用setCornerRadii
.
问题是我试图在视图中显示涟漪效应,但我无法做到这一点,因此涟漪效应以圆角为界,它总是绘制到原始矩形, like this
我试过为 RippleDrawable 的遮罩设置相同的角半径,或者使用
<item android:drawable="?android:selectableItemBackground" />
在图层列表中而不是 <ripple>
,但结果是相同的。有谁知道如何使涟漪达到新的界限?
解决方案,如果对任何人有用,就是使用不带遮罩的波纹,同时设置角半径(任何一个,稍后更新)
所以我用了
<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>
终于开始工作了