Android SeekBar最小值

有谁知道如何定义一个SeekBar的最小值? 这是在XML布局完成还是我需要以编程方式定义它?

基本上我需要将我的最小值从0改为0.2

  • 在AppCompat 23.1.0中,Android SeekBar不能是全宽度甚至设置填充0
  • 自定义search栏(拇指大小,颜色和背景)
  • Android ProgressBar.setProgressDrawable只能运行一次吗?
  • 以编程方式将拇指设置到seekbar的特定位置(而不是偏移量)?
  • 在Android中更改TextView的不透明度
  • 如何修复seekbar-bar-thumb-centering-issues
  • 如何在seekbar上显示一些值作为默认值?
  • 更改进度/ Seekbar标度为非线性(例如对数)
  • 嗨,有谁知道如何定义一个SeekBar的最小值?

    您无法定义最小值。 它是0

    基本上我需要将我的最小值从0改为0.2

    当你得到的值,加上0.2

    这里是我用来获取android:maxSeekBar的最大/最小范围。

     mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { int progressChanged = minimumValue; public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { progressChanged = minimumValue+ progress; } }); 

    所以你会得到范围minimum to minimum+max ;

    要在xml中设置最大值,请使用max=(desiredMax-min) ;

    基本上我已经添加了大小+ 10,它会自动将分钟设置为10,你可以改变你的设置它分钟。 值。

     @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int siz = size + 10; txtViewFontSize.setTextSize(siz); Toast.makeText(this, String.valueOf(siz), Toast.LENGTH_SHORT).show(); } 

    SeekBar对象在Java中的最小值必须是0(即不能被改变),但是这是如何获得所需的外观和性能。

    假设你希望你的分数是5,你的最大值是100

    因此,你有一个95的范围,所以你需要设置最大值为95的SeekBar。

    如果你的search栏有UI标签,你可以使他们5 (分钟)和100 (最大)。

    所以,布局XML将是像…

     <LinearLayout android:id="@+id/sampleSizeLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/batchDurationSecsLayout" android:orientation="vertical" android:visibility="visible" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/sample_size" /> <SeekBar android:id="@+id/sampleSizeSeekBar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="95" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:visibility="visible" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:gravity="left" android:text="5" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:gravity="right" android:text="100" /> </RelativeLayout> </LinearLayout> 

    所以现在你可以介绍一下这5更正

     final SeekBar sampleSizeSeekBar = (SeekBar)findViewById(R.id.sampleSizeSeekBar); final int sampleSizeSeekBarCorrection = 5; //eg, 95 <--> 100 int realValueFromPersistentStorage = appObj.getSampleSize(); //Get initial value from persistent storage, eg, 100 sampleSizeSeekBar.setProgress(realValueFromPersistentStorage - sampleSizeSeekBarCorrection); //Eg, to convert real value of 100 to SeekBar value of 95. sampleSizeSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { int val = sampleSizeSeekBar.getProgress(); public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { val = progress + sampleSizeSeekBarCorrection; //eg, to convert SeekBar value of 95 to real value of 100 } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { try { appObj.saveSampleSize(val); //Save real value to persistent storage, eg, 100 appObj.makeToast("Sample size set to " + val); } catch(Exception e) { Log.e(LOG_TAG, "Error saving sample size", e); appObj.makeToast("Error saving sample size: " + e); } } }); 

    这个解决scheme将会为您的search栏在用户界面上提供正确的最小值,最大值和缩放比例,如果用户一直向左滑动,则控件的位置不会“跳”到右边。

    我的解决scheme适用于我的是:

      @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress <= SOME_LIMIT) { seekBar.setProgress(SOME_LIMIT); } else { // DO SOMETHING } } 

    我创build了这个简单的库,它不是很多,但它可以节省一些时间。

    https://github.com/joaocsousa/DoubleSeekBar

    您无法设置浮动进度,因为seekbar.getProgress()总是返回整数值。 以下代码将设置textview值为0.2,如果seekbar值为0.您可以根据您的要求更改minimumVal。

     int minimumVal = 0; seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress >= minimumVal) { seekBar.setProgress(progress); textView.setText(progress); } else { seekBar.setProgress(minimumVal); textView.setText("0.2"); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); 

    你可以尝试这样做:

    int yourMinProgress = 10;

     private SeekBar.OnSeekBarChangeListener onSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { if (progress < yourMinProgress) { seekBar.setProgress(10); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }; 

    api版本> = 26中,现在可以将min xml属性添加到SeekBar中:

    android:min="0.2"

    这段代码适合我!

     SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar); seekBar.setMax(100); seekBar.setProgress(40); seekBar.setOnSeekBarChangeListener(seekBarChangeListener); SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { if(progress <= 40){ seekBar.setProgress(40); } if(progress >= 40) { pgr_status.setText(String.valueOf(progress)); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }; 

    我终于find了一种方法来设置seekBar 最小值 ,只需设置你的setOnSeekBarChangeListener像这样:

     int minimumValue = 10; // your minimum value seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // you can set progress value on TextView as usual txtProgress.setText(String.valueOf(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { if(seekBar.getProgress() < minimumValue) seekBar.setProgress(minimumValue); } }); 

    希望这可以帮助 :)

    就像JoãoMagalhães:

    您现在可以添加min xml属性到SeekBar:

     android:min="0.2" 

    但是,使用compat属性API <26更好;):

     xmlns:app="http://schemas.android.com/apk/res-auto" app:min="0.2"