ユーザーがクリックしたときにイベントをトリガーするために、シークバーのサムにクリック可能なイベントを登録したいと思います。出来ますか?
4812 次
4 に答える
3
zwebie と Nermeens の回答を適切な解決策に組み合わせる:
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
private int mProgressAtStartTracking;
private final int SENSITIVITY;
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
// handle progress change
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mProgressAtStartTracking = seekBar.getProgress();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if(Math.abs(mProgressAtStartTracking - seekBar.getProgress()) <= SENSITIVITY){
// react to thumb click
}
}
});
したがって、これは実際には親指の移動ではなく、シークバーの他の部分のクリックではなく、親指のクリックでのみ発生します。
感度を調整することができます。これは、クリックによって親指がすでに少し動いている場合があり、クリックしながら小さな変更を許可することでイライラが軽減される場合があるためです。ここでの適切な値は、シークバーのサイズと最大値によって異なります。私にとっては、縦向きレイアウトで最大50の全幅シークバーで3がうまく機能しました。
于 2016-08-24T12:55:14.377 に答える
1
私は次の方法でこれを達成することができました:
seekBar.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_MOVE)
{
changedPosition = true;
seekBar.setProgress(seekBar.getProgress());
return false;
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
if(!changedPosition)
{
//do action here
}
}
}
お役に立てれば
于 2012-08-14T11:33:51.133 に答える
0
私はこのようにします:
pagesSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { //listener
@Override
public void onStopTrackingTouch(final SeekBar seekBar) {
//add your event here
}
@Override
public void onStartTrackingTouch(final SeekBar seekBar) {
}
@Override
public void onProgressChanged(final SeekBar seekBar, final int progress, final boolean fromUser) {
updateControls(progress, false);
}
});
于 2012-07-27T08:52:26.940 に答える