在搜索栏中更改步长值?

lom*_*mza 44 android

我有一个搜索栏,在移动它时我想要将值从0更改为200.我有一个TextView,我在移动搜索栏时显示这些值.但我不希望从该间隔(0,1,2,3,4,5 ......)获得所有值,但要有10,20,30 ......等等.因此,当我移动搜索栏时,我想显示10,20,30,40 ....至200.有人可以给我一个提示或示例如何做到这一点?

Dha*_*dra 105

试试下面的代码

SeekBar seekBar = (SeekBar)layout.findViewById(R.id.seekbar);
seekBar.setProgress(0);
seekBar.incrementProgressBy(10);
seekBar.setMax(200);
TextView seekBarValue = (TextView)layout.findViewById(R.id.seekbarvalue);
seekBarValue.setText(tvRadius.getText().toString().trim());

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        progress = progress / 10;
        progress = progress * 10;
        seekBarValue.setText(String.valueOf(progress));
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {

    }
});
Run Code Online (Sandbox Code Playgroud)

setProgress(int) 用于设置搜索栏的起始值

setMax(int) 用于设置搜索栏的最大值

如果要设置搜索条的边界,则可以检查方法中的进度条值 onProgressChanged.如果进度小于或大于边界,则可以将进度设置为您定义的边界.

  • 什么是进步背后的逻辑=进步/ 10; 进步=进步*10; 这在onProgressChanged?如果你把某个东西除以常数并再次将它乘以相同的常数,那么它是不是初始值? (4认同)

Sha*_*har 15

我能想到的简单方法就是定义:

SeekBar yourSeekBar = (SeekBar)findViewById(R.id.yourSeekBarId);
yourSeekbar.setMax(20);
Run Code Online (Sandbox Code Playgroud)

接下来,覆盖这些方法(即使它们是空的,也需要空方法):

yourSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {          
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if (fromUser) {
                if (progress >= 0 && progress <= sizeSeekBar.getMax()) {                        

                    String progressString = String.valueOf(progress * 10);
                    yourTextView.setText(progressString); // the TextView Reference
                    seekBar.setSecondaryProgress(progress);
                }
            }

        }
    });
Run Code Online (Sandbox Code Playgroud)

我们的想法是只为搜索栏定义20个值,但总是将该值乘以10并显示该值.如果你真的不需要200个值,那么使用200个值是没有意义的.

  • +1表示简单.我搜索了其他问题,结果在这里,但认为你值得+1 (3认同)

Gab*_*tti 6

您可以使用Material Components LibrarySlider提供的属性:android:stepSize

    <com.google.android.material.slider.Slider
        android:valueFrom="0"
        android:valueTo="200"
        android:stepSize="10"
       ..>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明