android - 当 Toggled 和 disabled android switch 全部变灰时

标签 android ios xamarin xamarin.forms

Switch iOS

Switch Android

如上所示,当 iOS 中的开关切换被禁用并且切换时有颜色,但在 android 中没有。 在android中可以做同样的效果吗?

最佳答案

如果您只想更改拇指颜色以匹配 iOS UISwitch 轨道绿色 (#41D150),您可以更改 colorSwitchThumbNormalResources/values/style.xml 文件中(在您的 Xamarin.Android 项目中):

添加:

<item name="colorSwitchThumbNormal">#41D150</item>

API 19 - API 26 上运行的表单:

enter image description here

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 但更改颜色:

enter image description here

你最终得到:

enter image description here

或者使用基于可绘制对象的选择器和两个 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 文件:

enter image description here enter image description here

结果:

enter image description here

关于android - 当 Toggled 和 disabled android switch 全部变灰时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157966/

相关文章:

android - ViewPagers 的隐式 Z 排序

Android DBFlow 不保存对象

java - android登录页面 "Unfortunately app is not respinding "错误

android - "Request Desktop Site"与 Xamarin Android 中的 Intent

android - 将 Xamarin.Forms.Color 转换为平台特定颜色

android - 使用 Intent 重新启动当前 Activity

iphone - 有没有快速缩放图像的方法?

ios - 旋转手势结束后继续旋转图像

ios - UIPageViewController 指示器不改变颜色

visual-studio - 在 Xamarin Studio 和 Visual Studio 之间共享解决方案时避免合并问题