是否有 Android 相当于 iOS 上的 UISliders 的连续标志?

Is there an Android equivalent to the continuous flag for UISliders on iOS?

所以我正在编写一个 Xamarin.Forms 应用程序。我有一个音量滑块,需要在值更改时向设备发送音量命令。因为音量是通过 TCP 连接发送的并且必须由设备验证,并且设备可能并不总是实时做出反应(并且正在监视变化以及双向通信)连续滑块是不合适的。我只希望在用户松开拇指时触发 ValueChanged 事件。我在 iOS 上制作了一个自定义渲染器以覆盖 OnElementChanged 并将滑块的连续 属性 设置为 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 SliderSeekBar,因此您想从 [= 更新 Slider 的值13=] 事件与 ProgressChanged 事件(这是默认 SliderRenderer.

的正常行为

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

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

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

StopTrackingTouch: https://developer.xamarin.com/api/event/Android.Widget.SeekBar.StopTrackingTouch/