Android 表单:从图标化创建一个圆形/圆形按钮
我尝试创建一个圆形/圆形按钮,它可以显示字体图标。由于我已经在我的项目中使用了,我尝试从现有的Android 表单:从图标化创建一个圆形/圆形按钮,android,button,fonts,xamarin.forms,custom-renderer,Android,Button,Fonts,Xamarin.forms,Custom Renderer,我尝试创建一个圆形/圆形按钮,它可以显示字体图标。由于我已经在我的项目中使用了,我尝试从现有的IconButton创建圆角/圆形按钮 我首先尝试了这一点,将BorderRadiusas固定为HeightRequest/WidthRequest的一半值: <iconize:IconButton HeightRequest="40" WidthRequest="40" BorderRadius="20" Text
IconButton
创建圆角/圆形按钮
我首先尝试了这一点,将BorderRadiusas
固定为HeightRequest
/WidthRequest
的一半值:
<iconize:IconButton HeightRequest="40" WidthRequest="40"
BorderRadius="20"
Text="fa-500px" TextColor="Red" FontSize="20"
BackgroundColor="Orange" BorderColor="Red"
BorderWidth="2"
VerticalOptions="Start" HorizontalOptions="Center">
</iconize:IconButton>
默认渲染在UWP上按预期工作,但“单击”渲染不好,因为出现了一个矩形。
但是在Android上,按钮始终处于“默认”模式:没有边框,没有背景,…
因此,我为Android添加了一个扁平按钮控件和一个渲染器:
public class FlatButton : IconButton
{
}
[assembly: ExportRenderer(typeof(FlatButton), typeof(FlatButtonRenderer))]
namespace Iconize.Sample.Droid.Renderers
{
public class FlatButtonRenderer : ButtonRenderer
{
protected override void OnDraw(Android.Graphics.Canvas canvas)
{
base.OnDraw(canvas);
}
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
}
}
}
公共类平面按钮:图标按钮
{
}
[assembly:ExportRenderer(typeof(FlatButton)、typeof(FlatButton渲染器))]
命名空间Iconize.Sample.Droid.Renderers
{
公共类FlatButtonRenderer:ButtonRenderer
{
受保护的覆盖void OnDraw(Android.Graphics.Canvas画布)
{
底座.OnDraw(帆布);
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
}
}
}
我是这样用的:
<controls:FlatButton HeightRequest="40" WidthRequest="40"
BorderRadius="20"
Text="fa-500px" TextColor="Red" FontSize="20"
BackgroundColor="Orange" BorderColor="Red"
BorderWidth="2"
VerticalOptions="Start" HorizontalOptions="Center">
</controls:FlatButton>
这一次,Android上的圆形渲染效果不错,但我丢失了字体图标的“显示”。
以下是一个屏幕截图:
是否有办法保持圆形渲染器和图标显示?
第二次,当点击按钮时,有没有办法解决UWP上的渲染问题?
我还查看了其他插件:
- :似乎工作正常,但没有UWP支持
- :我无法在解决方案中使用它,并且我无法构建提供的示例
您还有其他建议吗?我终于找到了一个临时解决方案,重新定义了Iconize
IconButtonRenderer
,如下所示:
<controls:FlatButton HeightRequest="40" WidthRequest="40"
BorderRadius="20"
Text="fa-500px" TextColor="Red" FontSize="20"
BackgroundColor="Orange" BorderColor="Red"
BorderWidth="2"
VerticalOptions="Start" HorizontalOptions="Center">
</controls:FlatButton>
- :我创建了一个继承自
IconButton
- :我已经为Android复制了
。我必须删除第一个调试测试,以及预期的构造函数新格式:IconButtonRenderer
。所以这个类看起来是“过时的”public CircleIconButtonRenderer(Context):base(Context)
- :我已经在页面中实现了新控件,就像我们对
图标按钮所做的那样