Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 表单:从图标化创建一个圆形/圆形按钮_Android_Button_Fonts_Xamarin.forms_Custom Renderer - Fatal编程技术网

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)
    。所以这个类看起来是“过时的”
  • :我已经在页面中实现了新控件,就像我们对
    图标按钮所做的那样
但是可能有更好的方法,因为预期的构造函数没有实现