我正在寻找一种为xamarin表单中的按钮创建自定义渲染器的方法,这样我就可以在按钮左侧看到圆角。我试过寻找解决方案,但没有任何运气。
答案 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>
结果:
答案 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);
}
}
答案 3 :(得分:0)
Color background = Color.ParseColor("#ff3c4550");
GradientDrawable shape = new GradientDrawable();
shape.SetCornerRadius(10);
shape.SetColor(background.ToArgb());
Background = shape;