【问题标题】:Is there an Android equivalent to the continuous flag for UISliders on iOS?是否有与 iOS 上 UISliders 的连续标志等效的 Android?
【发布时间】:2016-05-04 08:23:05
【问题描述】:

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

【问题讨论】:

  • 我不同意将括号添加到倒置 if 的建议编辑。我不相信这会提高代码的可读性或可维护性。倒置 if 的意图非常明确。我认为这是 Resharper 的默认格式这一事实支持我自己的谦虚声明,即它不需要更改。

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


【解决方案1】:

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

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

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

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

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

【讨论】:

  • @bodangly 没问题,快乐的 Xammie 编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
相关资源
最近更新 更多