シークバーがあり、移動中に値を 0 から 200 に変更したいです。シークバーを移動しながらそれらの値を表示する TextView があります。しかし、その間隔(0、1、2、3、4、5 ...)のすべての値を取得したくはありませんが、10、20、30などを取得したいと考えています。したがって、シークバーを移動すると、10,20,30,40 .... を 200 に表示したいのですが、これを行う方法のヒントや例を教えてもらえますか?
97509 次
8 に答える
119
以下のコードを試してください
SeekBar seekBar = (SeekBar)layout.findViewById(R.id.seekbar);
seekBar.setProgress(0);
seekBar.incrementProgressBy(10);
seekBar.setMax(200);
TextView seekBarValue = (TextView)layout.findViewById(R.id.seekbarvalue);
seekBarValue.setText(tvRadius.getText().toString().trim());
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress = progress / 10;
progress = progress * 10;
seekBarValue.setText(String.valueOf(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
setProgress(int)
シークバーの開始値を設定するために使用されます
setMax(int)
シークバーの最大値を設定するために使用されます
シークバーの境界を設定する場合は、 onProgressChanged
メソッドでプログレスバーの値を確認できます。進行状況が境界よりも小さいか大きい場合は、定義した境界に進行状況を設定できます。
于 2011-09-07T05:33:04.583 に答える
18
私が考えることができる最も簡単な方法は、単に定義することです:
SeekBar yourSeekBar = (SeekBar)findViewById(R.id.yourSeekBarId);
yourSeekbar.setMax(20);
次に、これらのメソッドをオーバーライドします (空であっても、空のメソッドも必要です)。
yourSeekbar.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) {
if (fromUser) {
if (progress >= 0 && progress <= sizeSeekBar.getMax()) {
String progressString = String.valueOf(progress * 10);
yourTextView.setText(progressString); // the TextView Reference
seekBar.setSecondaryProgress(progress);
}
}
}
});
アイデアは、シークバーに 20 個の値のみを定義することですが、常に値を 10 倍してその値を表示します。200 個の値が本当に必要ない場合は、200 個の値を使用しても意味がありません。
于 2012-06-24T18:06:50.777 に答える
3
SeekBar.OnSeekBarChangeListener
進行状況の変化を追跡するには、 を使用する必要があります。コールしmseek.setMax(200)
ます。現在の値に対してモジュロ演算を実行して、テキストビューを更新する必要があるかどうかを決定します。
SeekBar.OnSeekBarChangeListener() {
void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (progress % 10 == 0) {
textview.setText(""+progress);
}
}
}
于 2011-09-07T05:28:59.870 に答える