Xamarin.android 创建带有渐变颜色和弯曲边缘的Xamarin按钮
我有一个xamarin Android按钮,边缘弯曲(边界半径)。在那里我想把颜色做成渐变色 如果我尝试通过绘制画布(作为自定义渲染器)来实现,它将通过覆盖ButtonRenderer的DispatchDraw函数而消失弯曲的边,如下所示Xamarin.android 创建带有渐变颜色和弯曲边缘的Xamarin按钮,xamarin.android,Xamarin.android,我有一个xamarin Android按钮,边缘弯曲(边界半径)。在那里我想把颜色做成渐变色 如果我尝试通过绘制画布(作为自定义渲染器)来实现,它将通过覆盖ButtonRenderer的DispatchDraw函数而消失弯曲的边,如下所示 protected override void DispatchDraw(Canvas canvas) { var gradient = new Android.Graphics.LinearGradient(0, 0, Width, Height,
protected override void DispatchDraw(Canvas canvas)
{
var gradient = new Android.Graphics.LinearGradient(0, 0, Width, Height,
this.StartColor.ToAndroid(),
this.EndColor.ToAndroid(),
Android.Graphics.Shader.TileMode.Clamp);
var paint = new Android.Graphics.Paint()
{
Dither = true,
};
paint.SetShader(gradient);
canvas.DrawPaint(paint);
base.DispatchDraw(canvas);
}
使用上述代码,按钮将消失曲线边缘。在此代码之前,我使用background属性设置颜色。有了这个属性,我可以看到曲线边,但上面的代码看不到
因此,我的假设是,如果我可以为按钮的背景色属性设置渐变色,这将起作用,不幸的是,我找不到一种方法
有人能帮我做到这一点吗?我发现XML更容易理解,因此,我会这样做:
_button.SetBackgroundResource(Resource.Drawable.Gradient);
Gradient.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<!--make a gradient background-->
<gradient
android:type="linear"
android:startColor="#556B2F"
android:endColor="#BDB76B"
android:centerColor="#ffffff"
android:angle="90"
android:gradientRadius="90"
/>
<!--apply a border around button-->
<stroke android:color="#006400" android:width="2dp" />
<!-- make the button corners rounded-->
<corners android:radius="25dp"/>
</shape>
</item>
</selector>
或者在C#代码中,如下所示:
_button.SetBackgroundResource(Resource.Drawable.Gradient);
让我们看看你到底做了什么want@G.hakim谢谢你的评论,我刚刚用更多信息更新了这个问题。分享一张你想要的图片,如果可能的话,你可以在蓝色的臀部上方找到这个:有没有一种方法可以在同一个xml中定义多个渐变?就我对安卓系统的知识而言,我认为你不能做到这一点,但你可以浏览一下,看看这是否可行,然后在如果是这样的话,也请让我知道