最佳答案
如果您只想更改拇指颜色以匹配 iOS UISwitch
轨道绿色 (#41D150
),您可以更改 colorSwitchThumbNormal
在 Resources/values/style.xml
文件中(在您的 Xamarin.Android
项目中):
添加:
<item name="colorSwitchThumbNormal">#41D150</item>
在 API 19
- API 26
上运行的表单:
when the switch is disabled and is toggled, I want less opacity
如果你想改变 track
颜色,你可以使用一个非常简单的渲染器来改变 Android 上所有 Forms 的 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 图像。 normal 主题使用 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 文件:
结果:
关于android - 当 Toggled 和 disabled android switch 全部变灰时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157966/