渐变层表单作为Xamarin.Forms Android中的按钮形式 [英] Gradient Layer form as the form of a button in Xamarin.Forms Android

查看:94
本文介绍了渐变层表单作为Xamarin.Forms Android中的按钮形式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要按钮上的渐变背景.我使用Custome Renderer来做到这一点.这是我的代码:

I need a gradient background on the button. I used Custome Renderer to do this. Here my code:

[assembly: ExportRenderer (typeof (Xamarin.Forms.Button), typeof (EvoMotorOilApp.Droid.MyButtonRender))]

...

protected override void DispatchDraw(global::Android.Graphics.Canvas canvas)
    {
        base.DispatchDraw(canvas);

        var gradient = new Android.Graphics.LinearGradient(0, 0, 0, Height, 
            Color.FromRgba(255, 255, 255, 255).ToAndroid(), 
            Color.FromRgba(70, 70, 70, 50).ToAndroid(),
            Android.Graphics.Shader.TileMode.Repeat);

        var paint = new Android.Graphics.Paint() {
            Dither = true,
        };
        paint.SetShader(gradient);

        canvas.DrawPaint(paint);


    }

但是结果是渐变层超出了按钮,并且具有锐角.怎么做会形成渐变就像按钮形式一样? 屏幕快照: https://drive.google.com/file/d/0B8C-lgUpGFGDVzhVUzJrMm01cFU/view?usp = sharing

But as a result gradient layer extends beyond the button and hes have acute angles. How to do that would form gradient was as like button form? There a screenshot: https://drive.google.com/file/d/0B8C-lgUpGFGDVzhVUzJrMm01cFU/view?usp=sharing

推荐答案

只需将控件背景色设置为GradientDrawable:

Just set control background color to GradientDrawable:

public class GradientButtonRenderer : ButtonRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {
            var gradient = new GradientDrawable(GradientDrawable.Orientation.TopBottom, new[] {
                Color.FromRgba(255, 255, 255, 255).ToAndroid().ToArgb(), 
                Color.FromRgba(70, 70, 70, 50).ToAndroid().ToArgb()
            });

            Control.SetBackgroundDrawable(gradient);
        }
    }
}

您还可以使用StateListDrawable为正常/按下/禁用的按钮状态设置不同的颜色.

You could also use StateListDrawable to set different colors for normal/pressed/disabled button states.

这篇关于渐变层表单作为Xamarin.Forms Android中的按钮形式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆