Si8*_*Si8 35 java android seekbar
我有一个搜索栏,试图将值设置为60到180为1,而40到190为第二步为1.
sb1 = (SeekBar) findViewById(R.id.progresss);
sb1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
//int inVal = Integer.parseInt(String.valueOf(seekBar.getProgress()));
//inVal =+ 70;
//Toast.makeText(getApplicationContext(), String.valueOf(inVal),Toast.LENGTH_LONG).show();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
// TODO Auto-generated method stub
progress =+ 70;
Toast.makeText(getApplicationContext(), String.valueOf(progress),Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
不管用.知道怎么解决吗?
Wan*_*igh 98
您不能设置minSeekBar 的值(始终为0),也不能设置stepSeekBar 的值(始终为1).
要将值设置为60到180,步长为1:
int step = 1;
int max = 180;
int min = 60;
// Ex :
// If you want values from 3 to 5 with a step of 0.1 (3, 3.1, 3.2, ..., 5)
// this means that you have 21 possible values in the seekbar.
// So the range of the seek bar will be [0 ; (5-3)/0.1 = 20].
seekbar.setMax( (max - min) / step );
seekbar.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)
{
// Ex :
// And finally when you want to retrieve the value in the range you
// wanted in the first place -> [3-5]
//
// if progress = 13 -> value = 3 + (13 * 0.1) = 4.3
double value = min + (progress * step);
}
}
);
Run Code Online (Sandbox Code Playgroud)
我在代码中添加了另一个示例,以便您了解数学.
Kai*_*bhi 31
您可以使用以下代码为搜索栏设置最大值:
sb1.setMax(100);
Run Code Online (Sandbox Code Playgroud)
这将设置搜索栏的最大值.
但是你不能设置最小值,但是你可以做一些算术来调整值.使用算术来调整应用程序所需的值.
例如,假设您希望在SeekBar上显示从-50到100的数据值.将SeekBar的最大值设置为150(100 - ( - 50)),然后将50添加到原始值以获取设置条位置时应使用的数字.
您可以通过此链接获得更多信息.
ish*_*shu 12
seekbar.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) {
int MIN = 5;
if (progress < MIN) {
value.setText(" Time Interval (" + seektime + " sec)");
} else {
seektime = progress;
}
value.setText(" Time Interval (" + seektime + " sec)");
}
});
Run Code Online (Sandbox Code Playgroud)
Pel*_*nes 10
为我设置最小值和最大值到搜索条的最简单方法:如果你想要值min = 60到max = 180,这等于min = 0 max = 120.所以在你的seekbar xml set属性中:
android:max="120"
Run Code Online (Sandbox Code Playgroud)
min将始终为0.
现在你只需要做你正在做的事情,添加金额以获得任何变化中的翻译值,在这种情况下为+60.
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int translatedProgress = progress + 60;
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Run Code Online (Sandbox Code Playgroud)
注意搜索栏属性android:progress,如果更改范围,则必须重新计算初始进度.如果你想要50%,max/2,在我的例子中120/2 = 60;
| 归档时间: |
|
| 查看次数: |
93933 次 |
| 最近记录: |