答案 0 :(得分:5)
如果您只想更改拇指颜色以匹配iOS UISwitch
曲目绿色(#41D150
),则可以更改colorSwitchThumbNormal
文件中的Resources/values/style.xml
(在您的Xamarin.Android
项目中:
添加:
<item name="colorSwitchThumbNormal">#41D150</item>
在API 19
- API 26
上运行的表单:
当开关被禁用并切换时,我想要更少的不透明度
如果您想更改track
颜色,可以使用一个非常简单的渲染器来更改Android上的所有表单“Switch
”:
[assembly: ExportRenderer(typeof(Switch), typeof(StyleBasedSwitchRenderer))]
namespace Forms_PCL_XAML.Droid
{
public class StyleBasedSwitchRenderer : SwitchRenderer
{
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Switch> e)
{
base.OnElementChanged(e);
Control?.SetTrackResource(Resource.Drawable.form_switch_track_mtrl_alpha);
}
}
}
Resource.Drawable.form_switch_track_mtrl_alpha
是9Patch图片。 普通主题在AppCompat库中使用abc_switch_track_mtrl_alpha.9.png
。
因此,如果您添加类似的9Patch但更改颜色:
你最终得到:
或者使用基于绘图的选择器和两个9Patch图像来保持拇指的相同默认颜色:
渲染器变为:
Control?.SetTrackResource(Resource.Drawable.form_switch_selector);
Resource.Drawable文件夹中的选择器(form_switch_selector.xml
):
<?xml version="1.0" encoding="UTF-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/form_switch_track_selected" />
<item android:drawable="@drawable/form_switch_track_mtrl_alpha" />
</selector>
两个9Patch文件:
结果:
答案 1 :(得分:1)
如果您想更改Xamarin表单中Effect
控件的默认颜色,可以使用我们在Forms社区工具包中创建的((SwitchCompat)Control).ThumbDrawable.SetColorFilter(...
...
如果您愿意,也可以使用实际代码,可在此处使用
中使用它所以它在幕后的功能是挂钩到实际的Android原生控件中,并使用你在XAML中提供的颜色更改它的颜色。 用于设置颜色的本机代码如下:
{{1}}