简体   繁体   English

以编程方式更改按钮样式

[英]Change button style programmatically

I want to draw material design Flat Button on android, for that i made this renderer: 我想在android上绘制材质设计平面按钮,为此我制作了这个渲染器:

public class NativeFlatButtonRenderer : ButtonRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);

        var oldElement = e.OldElement as NativeFlatButton;

        if (oldElement != null)
        {
        }

        var newElement = e.NewElement as NativeFlatButton;
        if (newElement != null)
        {
            Control.SetBackgroundResource(Android.Resource.Style.WidgetMaterialButtonBorderless);
        }
    }
}

and it throws Android.Content.Res.Resources+NotFoundException: Resource ID #0x1030259 并抛出Android.Content.Res.Resources + NotFoundException:资源ID#0x1030259
when i change to 当我更改为

if (newElement != null)
{
   var button = new AppCompatButton(Context, null, Android.Resource.Style.WidgetMaterialButtonBorderlessColored);
   SetNativeControl(button);
}

its drawing but without commands etc. So how i can draw Flat Button with renderer on android? 它的绘图,但没有命令等。 那么我如何在Android上使用渲染器绘制Flat Button?

That was quiet easy. 那很安静。 Here is the ButtonRenderer method that creates native control: 这是创建本机控件的ButtonRenderer方法:

protected override Android.Widget.Button CreateNativeControl()
{
   return new Android.Widget.Button(this.Context);
}

So i only need to override it and there is my complete renderer: 所以我只需要重写它,便有完整的渲染器:

public class NativeFlatButtonRenderer : ButtonRenderer
{
    protected override Android.Widget.Button CreateNativeControl()
    {
        var button = new AppCompatButton(Context, null, Android.Resource.Style.WidgetMaterialButtonBorderlessColored);
        return button;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM