在Xamarin.Forms中更改切换颜色?

时间:2016-03-10 05:28:24

标签: xamarin.android toggle xamarin.forms

我想在android中更改switch的颜色并创建自定义渲染器,就像堆栈溢出中的一个帖子一样: 以下是代码

public class CustomSwitchRenderer : SwitchRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Switch> e)
{
    base.OnElementChanged(e);

    if (Control != null)
    {
        Control.TextOn = "Yes";
        Control.TextOff = "No";

        Android.Graphics.Color colorOn = Android.Graphics.Color.Rgb(239, 201, 6);
        Android.Graphics.Color colorOff = Android.Graphics.Color.LightGray;
        Android.Graphics.Color colorDisabled = Android.Graphics.Color.Gray;
        Android.Graphics.Color textColor = Android.Graphics.Color.Black;

        Control.SetTextColor (ColorStateList.ValueOf  (textColor));
        Control.SetTextColor (textColor);

        StateListDrawable drawable = new StateListDrawable();
        drawable.AddState(new int[] { Android.Resource.Attribute.StateChecked }, new ColorDrawable(colorOn));
        drawable.AddState(new int[] { -Android.Resource.Attribute.StateEnabled }, new ColorDrawable(colorDisabled));
        drawable.AddState(new int[] { }, new ColorDrawable(colorOff));

        Control.ThumbDrawable = drawable;

    }
}

} 这段代码对我不起作用?我是否还需要在drawable文件夹中添加一些项目?

3 个答案:

答案 0 :(得分:2)

使用Forms 2.1,现在有effects可以在只进行轻微视觉更改的情况下删除对自定义渲染器的需求。有关开始使用它们的信息,请参阅链接指南。

答案 1 :(得分:1)

您可以在UI项目中创建自己的控件:

Switch

之后,将您使用MySwitch控件的表单更改为Xamarin.Forms控件。

然后,您需要告知MySwitch基础架构您为*.Droid控件提供渲染器。

AssemblyInfo.cs项目中,在程序集级别添加以下属性(在命名空间声明之上或[assembly: ExportRenderer(typeof(MySwitch), typeof(CustomSwitchRenderer))] 文件中)

Error detecting IP address for mobile app to connect to:
Found multiple network interfaces with non-internal IPv4 addresses:
10.0.2.182, 192.168.34.1, 192.168.224.1
Please specify the address that the mobile app should connect
to with --mobile-server.

答案 2 :(得分:0)

对于Android,您可以更改属性&#34; colorAccent&#34;在你的&#34; styles.xml&#34;文件

<item name="colorAccent">#008000</item>