如何限制搜索栏

isc*_*ers 34 android seekbar android-sdk-2.1

我想将SeekBar的最大和最小限制分别设置为50和20.

SeekBar有一个直接选项top top提供最大值,但是如何将其最小值设置为20而不是0?

Par*_*ani 77

在SeekBar你 can set only max value.

<SeekBar android:id="@+id/SeekBar01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="50"/>
Run Code Online (Sandbox Code Playgroud)

并且,您无法直接将最小值设置为搜索条.

 SeekBar mSeekbar = (SeekBar) findViewById(R.id.SeekBar01);

    mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
    {
       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
       {
            length_edit.setText(Integer.toString(progress + 20));
       }

      public void onStartTrackingTouch(SeekBar seekBar) {}

      public void onStopTrackingTouch(SeekBar seekBar) {}
    });
Run Code Online (Sandbox Code Playgroud)

当你看到最小进度时,你可以用我想要的最小值 - 在你的情况下20.


Rom*_*Guy 24

将最大值设置为30,并将20添加到从SeekBar读取的值.


Ole*_*Nos 6

最简单的方法是将它限制在SeekBar.OnSeekBarChangeListener()适合您的范围内SeekBar.

首先,您需要创建具有最小值或默认值的字段.然后在创建时设置此值SeekBar:

private int fillDefault;
Run Code Online (Sandbox Code Playgroud)

onCreateView()一个FragmentonCreate一个Activity:

fillDefault = 20;
fillSeekBar.setProgress(fillDefault);
Run Code Online (Sandbox Code Playgroud)

其次,为它实现监听器:

fillSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            // Notification that the progress level has changed.
            if (progress < fillDefault){
                seekBar.setProgress(fillDefault); // magic solution, ha
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // Notification that the user has started a touch gesture.
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // Notification that the user has finished a touch gesture.
        }
    });
Run Code Online (Sandbox Code Playgroud)

有用.简单而棒极了:D