将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
}
}
});
因此,这实际上仅在单击拇指时触发,而不是在拇指移动时也不会在搜索栏的其他部分单击时触发.
您可以调整灵敏度,因为有时单击已经使拇指稍微移动了一点,而在仍然单击的情况下进行了很小的更改就可以减少挫败感.此处的好值取决于搜索栏的大小及其可拥有的最大值.对我来说,3在全宽搜索栏中的效果很好,在纵向布局中最大可以显示50.