如何从新的 android 材料设计 Slider 中获得价值

PLa*_*Lab 4 android android-seekbar material-design material-components-android android-slider

使用新材料设计滑块com.google.android.material.slider.Slider。由于它最近刚刚发布,因此文档很差。试图从滑块中获取价值,但目前没有运气。换句话说,滑块相当于setOnProgressChanged { }来自 Seekbar。

Gab*_*tti 9

您可以使用OnChangeListener侦听器

slider.addOnChangeListener(new Slider.OnChangeListener() {
    @Override
    public void onValueChange(@NonNull Slider slider, float value, boolean fromUser) {
        //Use the value
    }
});
Run Code Online (Sandbox Code Playgroud)


Jen*_*anu 7

要获取值更新,您可以使用Slider.OnChangeListener

val slider = Slider(requireContext())
slider.addOnChangeListener { slider, value, fromUser -> /* `value` is the argument you need */ }
// the same implementation with interface name
// slider.addOnChangeListener(Slider.OnChangeListener { slider, value, fromUser -> })
Run Code Online (Sandbox Code Playgroud)

来自Material Components 官方存储库的滑块实现示例。


Int*_*iya 5

  Slider slider = findViewById(R.id.slider);
  slider.addOnSliderTouchListener(touchListener);
Run Code Online (Sandbox Code Playgroud)

然后

private final OnSliderTouchListener touchListener =
      new OnSliderTouchListener() {
        @Override
        public void onStartTrackingTouch(Slider slider) {

        }

        @Override
        public void onStopTrackingTouch(Slider slider) {

        }
      };
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请检查 SliderMainDemoFragment.java

  • 这应该是公认的答案。OnChangeListener 报告每一个更改,即使仍在拖动时也是如此。OnSliderTouchListener 仅在滑块触摸释放后报告一次。 (3认同)