如何创建xamarin表单按钮左角半径
Posted
技术标签:
【中文标题】如何创建xamarin表单按钮左角半径【英文标题】:How to create xamarin forms button left corner radius 【发布时间】:2018-06-08 06:14:44 【问题描述】:我正在寻找一种方法来为 xamarin 表单中的按钮创建自定义渲染器,以便我可以在按钮的左侧获得圆角。我已经尝试寻找解决方案,但没有任何运气。
【问题讨论】:
在否决票上放轻松,没有教程或关于这个主题的任何东西,只有一侧圆形的按钮。 【参考方案1】:在 android 上,您可以在 drawable
文件夹中使用 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: android:color="#B1BCBE" />
<corners
android:topLeftRadius="10dp"
android:bottomLeftRadius="10dp"/>
</shape>
在您的自定义渲染中:
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
base.OnElementChanged(e);
if (Control != null)
Control.SetBackgroundResource(Resource.Drawable.layout_bg);
结果:
【讨论】:
【参考方案2】:有一个非常受欢迎的开源项目FlexButton 可以帮助解决您面临的挑战。如果出于某种原因您仍想自己解决它,而不引入外部依赖项,那么您可以查看该项目的源代码以更好地了解如何实现。
另一种选择是更精确地搜索网络并检查诸如this之类的线程。
祝你好运。
【讨论】:
【参考方案3】:用于为按钮或任何控件制作不同的圆角半径。您需要在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
【讨论】:
【参考方案4】:Color background = Color.ParseColor("#ff3c4550");
GradientDrawable shape = new GradientDrawable();
shape.SetCornerRadius(10);
shape.SetColor(background.ToArgb());
Background = shape;
【讨论】:
这如何回答这个问题?SetCornerRadius
是否只影响请求的特定角?
您好!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释并说明适用的限制和假设。
抱歉,我的时间太短了,但我在假期前没时间了;)无论如何,我希望它对一个或其他开发人员有所帮助。 (SetCornerRadius)
应用于所有角落。在 OnElementChanged
方法中的 XF android 自定义渲染器代码中使用此代码,它应该是单词。我在自己创建的从 Android.Widget.Button 派生的按钮中自己使用它。以上是关于如何创建xamarin表单按钮左角半径的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin挖墙脚系列:开始使用Xamari4.0系列产品开发IOS