【发布时间】:2010-08-16 06:07:45
【问题描述】:
我想将 SeekBar 的最大和最小限制分别设置为 50 和 20。
SeekBar 有一个直接选项 top 提供最大值,但是如何将其最小值设置为 20 而不是 0?
【问题讨论】:
标签: android android-sdk-2.1 seekbar
我想将 SeekBar 的最大和最小限制分别设置为 50 和 20。
SeekBar 有一个直接选项 top 提供最大值,但是如何将其最小值设置为 20 而不是 0?
【问题讨论】:
标签: android android-sdk-2.1 seekbar
在 SeekBar 你 can set only max value.
<SeekBar android:id="@+id/SeekBar01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="50"/>
而且, 您不能直接将最小值设置为搜索栏。
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) {}
});
当您看到最小进度时,您可以用我想要的 min 求和 - 在您的情况下为 20。
【讨论】:
view
将最大值设置为 30,并将从 SeekBar 读取的值加 20。
【讨论】:
setMin():developer.android.com/reference/android/widget/…
执行此操作的最简单方法是将其限制在 SeekBar.OnSeekBarChangeListener() 中以供您的 SeekBar 使用。
首先,您需要创建具有最小值或默认值的字段。然后在创建SeekBar时设置这个值:
private int fillDefault;
在Fragment 的onCreateView() 或Activity 的onCreate 中:
fillDefault = 20;
fillSeekBar.setProgress(fillDefault);
其次,为它实现监听器:
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.
}
});
它有效。简单又棒:D
【讨论】:
例如;
public static int LENGTH_MIN_VALUE = 20;
public static int LENGTH_MAX_VALUE = 50;
SeekBar seekBar = (SeekBar) findViewById(R.id.passwordSeekBar);
seekBar.setMax(LENGTH_MAX_VALUE);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(progress <= Constract.PASSWORD_LENGTH_MIN_VALUE){
progress = Constract.PASSWORD_LENGTH_MIN_VALUE + progress;
}
String numberAsString = String.valueOf(progress);
seekNumberView.setText(numberAsString);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
【讨论】:
【讨论】:
你可以试试这个:
seekBar.setMax(max_value-min_value);
【讨论】: