如何在xaml中为xamarin表单app使用自定义元素

时间:2016-09-24 09:32:30

标签: xamarin.forms

我正在尝试开发xamarin表单应用。我需要使用自定义的UI元素。例如,我不需要使用Button,而是需要使用MyAppButton。

如何实现此功能?我认为通过继承Button实现一个类MyAppButton是一个解决方案。这是正确的方法吗?是否有可用的示例实现?

由于

1 个答案:

答案 0 :(得分:0)

  

@ user3165999回复:   '我需要自定义单选按钮图标。任何人都可以帮我这个吗?'

您需要做的第一件事是创建Element的Custom Renderer。 之后,您需要在* Renderer.cs上编写自定义样式,修改Control的字段(即您的元素)。

例如在Android中,您可以执行以下操作:

public class RadioButtonRenderer: ViewRenderer<CustomRadioButton, RadioButton>
{
    protected override void OnLayout(bool changed, int l, int t, int r, int b)
    {
        base.OnLayout(changed, l, t, r, b);

        if (Control != null)
        {
            var radioButton = Control;
            // Resource.Drawable.backgroundradiobutton is an XML file that you have to create and insert in Resources -> Drawable -> backgroundradiobutton.xml
            Drawable drawable = ResourcesCompat.GetDrawable(Resources, Resource.Drawable.backgroundradiobutton, Resources.NewTheme());
            radioButton.SetButtonDrawable(drawable);
        }
    }
}
  

backgroundradiobutton.xml

     

在这种情况下,这必须是包含单选按钮图形的文件。   请注意,单选按钮可以使用“State List Drawables”类根据RadioButton的状态更改图形。   More Info Here

Android中对图形元素(例如按钮,滑块等)的大多数自定义都是通过XML文件进行的。 如果你不了解这种环境,你应该看看。

也许this会有所帮助。

在iOS上,您可以执行以下操作:

class RadioButtonRenderer : ViewRenderer<CustomRadioButton, RadioButtonView>
{
    protected override void OnElementChanged(ElementChangedEventArgs<RadioButton> e)
    {
        base.OnElementChanged(e);
        var radioButton = Control;
        radioButton.SetBackgroundImage(UIImage.FromFile("pathofimageinreourcesfolder.png"), UIControlState.Application);
        // You need to set background image for each state.
    }
}
  

正如您所见,iOS渲染器接受图像作为图形资源。

     

事实上,(我认为)iOS定制相对简单

我希望我很清楚,对不起我的英语 Byee。