SeekBarの上限と下限をそれぞれ50と20に設定したいと思います。
SeekBar は最大値を提供する直接オプションtopを持っていますが、最小値を0ではなく20に設定する方法は?
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) {}
});
最小の進捗状況を見ると、私が望む最小値と合計することができます-あなたのケースでは20。
最大値を30に設定し、SeekBarから読み取る値に20を追加します。
これを行う最も簡単な方法は、SeekBar
のSeekBar.OnSeekBarChangeListener()
で制限することです。
最初に、最小値またはデフォルト値でフィールドを作成する必要があります。次に、SeekBar
を作成するときにこの値を設定します。
_private int fillDefault;
_
Fragment
のonCreateView()
またはonCreate
のActivity
:
_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) {}
});