Android上是否有类似于UISliders的连续标志的Android?

时间:2016-05-03 23:52:07

标签: c# android xamarin xamarin.android xamarin.forms

所以我正在编写一个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控件上调用的等效标志或函数来获取此行为?

1 个答案:

答案 0 :(得分:3)

因此,Android上的Xamarin.Forms SliderSeekBar,因此您希望更新Slider事件与StopTrackingTouch事件ProgressChanged的值{1}}事件(这是默认SliderRenderer的正常行为。

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

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

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

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