Skip to main content
 首页 » 编程设计

c#之是否有一个 Android 相当于 iOS 上 UISliders 的连续标志

2024年04月30日32me-sa

所以我正在编写一个 Xamarin.Forms 应用程序。我有一个音量 slider ,需要在值更改时向设备发送音量命令。因为音量是通过 TCP 连接发送的并且必须由设备验证,并且设备可能并不总是实时使用react(并且正在监视变化以及双向通信)连续 slider 是不合适的。我只希望在用户松开拇指时触发 ValueChanged 事件。我在 iOS 上制作了一个自定义渲染器来覆盖 OnElementChanged 并将 slider 的连续属性设置为 false:

    protected override void OnElementChanged(ElementChangedEventArgs<Slider> e) { 
        base.OnElementChanged(e); 
 
        if (Control == null) return; 
 
        Control.MinimumTrackTintColor = UIColor.FromRGB(0xE6, 0x00, 0x06); 
        Control.Continuous = false; 
    } 

这就像一个魅力。我想为 Android 做类似的事情,但我似乎无法弄清楚如何去做。我可以在 ProgressDrawable 控件上调用等效标志或函数来实现此行为吗?

请您参考如下方法:

所以 Android 上的 Xamarin.Forms Slider 是一个 SeekBar,因此您要从 Slider 更新 的值code>StopTrackingTouch 事件与 ProgressChanged 事件(这是默认 SliderRenderer 的正常行为。

因此,在您的自定义 SliderRenderer 中,您可以覆盖 ProgressChanged 事件(替换默认的 SliderRenderer 事件)并将 ProgressValue 保存到类 -水平变量。

然后覆盖(添加)StopTrackingTouch 事件,然后将表单的 Slider.Value 设置为您从 ProgressChanged< 保存在本地 var 中的值 事件。

进度已更改:https://developer.xamarin.com/api/event/Android.Widget.SeekBar.ProgressChanged/

停止跟踪触摸:https://developer.xamarin.com/api/event/Android.Widget.SeekBar.StopTrackingTouch/