2015-10-19 16 views
1

如何設置android渲染器中文本的顏色?我有以下渲染:Xamarin窗體 - 設置切換文本顏色

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似乎不起作用。

回答

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); 

希望它有幫助。如果你不能得到它,讓我知道我上傳一個示例應用程序。

+0

嗨,你可以上傳與iOS和Droid自定義渲染示例應用程序。 – sudheer