我想在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文件夹中添加一些项目?
答案 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>