如何创建xamarin表单按钮左角半径

时间:2018-06-08 06:14:44

标签: c# android ios xamarin.forms

我正在寻找一种为xamarin表单中的按钮创建自定义渲染器的方法,这样我就可以在按钮左侧看到圆角。我试过寻找解决方案,但没有任何运气。

4 个答案:

答案 0 :(得分:1)

有一个非常受欢迎的开源项目FlexButton可以帮助您解决您所面临的挑战。如果由于某种原因你仍然希望自己解决它,而不引入外部依赖项,那么你可以检查这个项目的源代码,以便更好地了解它是如何实现的。

备选方案是更精确地搜索网络并检查this等线程。

祝你好运。

答案 1 :(得分:1)

在Android上,您可以在名为drawable的{​​{1}}文件夹中使用shape

layout_bg

在自定义渲染中:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF"/>
    <stroke android:width="3dp" android:color="#B1BCBE" />
    <corners
        android:topLeftRadius="10dp"
        android:bottomLeftRadius="10dp"/>
</shape>

结果:

enter image description here

答案 2 :(得分:0)

为按钮或任何控件设置不同的拐角半径。您需要在float []数组变量中声明左上角,右上角,左下角,右下角和右下角半径,并在GradientDrawable的SetCornerRadii()方法中传递float变量。

protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
{

  base.OnElementChanged(e);

        if (Control != null)
        {
            Control.SetAllCaps(false);
            GradientDrawable gradientDrawable = new GradientDrawable();                
            float[] radius= new float[8];
            radius[0] = 46f;   //Top Left corner
            radius[1] = 46f;   //Top Left corner
            radius[2] = 0;     //Top Right corner
            radius[3] = 0;     //Top Right corner
            radius[4] = 0;     //Bottom Right corner
            radius[5] = 0;     //Bottom Right corner
            radius[6] = 46f;   //Bottom Left corner
            radius[7] = 46f;   //Bottom Left corner
            gradientDrawable.SetCornerRadii(radius);
            Control.SetBackground(gradientDrawable);
        }
    }

enter image description here

答案 3 :(得分:0)

Color background = Color.ParseColor("#ff3c4550");
GradientDrawable shape = new GradientDrawable();
shape.SetCornerRadius(10);
shape.SetColor(background.ToArgb());
Background = shape;