Android SeekBar最小值
有谁知道如何定义一个SeekBar的最小值? 这是在XML布局完成还是我需要以编程方式定义它?
基本上我需要将我的最小值从0改为0.2
嗨,有谁知道如何定义一个SeekBar的最小值?
您无法定义最小值。 它是0
。
基本上我需要将我的最小值从0改为0.2
当你得到的值,加上0.2
。
这里是我用来获取android:max
为SeekBar
的最大/最小范围。
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了这个简单的库,它不是很多,但它可以节省一些时间。
您无法设置浮动进度,因为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); } });
希望这可以帮助 :)
- Android View.getDrawingCache返回null,仅为null
- Android Studio:检测到未注册的VCS根目录
- Android“单顶”启动模式和onNewIntent方法
- Galaxy S5 Lollipop – 并非所有的断点都会在Android Studiodebugging器下停止执行
- 在webview中打开一个pdf文件。
- 设置EditText光标颜色
- 示例:使用AsyncTask的Android双向networking套接字
- Androiddevise支持库的新function以及如何使用其Snackbar?
- android通过Uri.getPath()获取真实path