値がtrueの場合、シークバーのドラッグをブロックしたいと思います。これも可能ですか?シークバーをスイッチとして使用しています。シークバーの値が0の場合、ボタンを押すとアクションAが開始されます。シークバーの値が1で、ボタンを押すと、アクションBが開始されます。
アクションAまたはBが実行されている場合、シークバーが別の位置にドラッグされるのを防ぎたい。
どうすればこれを達成できますか?
独自のonTouchListenerを設定し、trueを返す必要があります。
seekBar.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return true;
}
});
1つのクラスレベル変数を設定する
private boolean blockSeekBar = false;
その後、要件に応じてblockSeekBar
変数を設定し、アプリで使用します。
seekBar.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return blockSeekbar;
}
});
setEnabled(true/false) 選択肢もありますが、ビューが適切に表示されないため、上記のコードが完全に機能しているのはそのためです。
int lastProgress=0;
Seekbar.OnSeekbarChangeListenerが起動されたときの最後の進行状況を追跡します。
private SeekBar.OnSeekBarChangeListener mOnSeekbarChangeListener = new
SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
if (fromUser) {
if (true) {
seekbar.setProgress(lastProgress);
} else {
seekbar.setProgress(progress);
}
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
lastProgress = seekBar.getProgress();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
};