Xamarin表单 - 设置开关文本颜色

时间:2015-10-19 12:18:44

标签: xamarin xamarin.android xamarin.forms

如何设置Android渲染器中文本的颜色?我有以下渲染器:

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;

        }
    }
}

我可以更改开关的颜色,但我无法弄清楚如何更改YES / NO文本的颜色。 SetTextColor似乎不起作用。

1 个答案:

答案 0 :(得分:4)

在droid项目的Resources \ values目录下创建一个xml文件。 名称无关紧要,但需要以.xml结尾并包含

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:textColor">#00FF00</item>
    </style>
</resources>

然后在您的渲染器中调用Control.SetSwitchTextAppearance。传递上下文和您创建的资源的ResId。您可以从名为Resource.designer.cs的资源下的生成文件中获取Id。或者,您可以调用生成的Const,如下所示。

Control.SetSwitchTextAppearance (Control.Context, Resource.Style.CodeFont);

希望它有所帮助。如果你不能得到它让我知道我上传一个示例应用程序。