所以我正在编写一个 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/