我想在seekbar的拇指上注册一个可点击的事件,以便在用户使用它时触发事件。可能吗?Seekbar的拇指点击
回答
我做这种方式:
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);
}
});
我想只能在拇指中点击。该聆听者被触发点击搜索栏的每个部分 – biquillo 2012-07-27 09:36:02
我能够通过以下方式来实现这一目标:
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
}
}
}
希望这有助于
结合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
}
}
});
所以这只会在拇指点击时触发,而不是在拇指移动上,而不是点击搜索栏的其他部分。
您可以调整灵敏度,因为有时点击已经略微移动了拇指,并且允许很小的变化,而仍然点击不那么令人沮丧。这里的一个好的值取决于seekbar的大小和它可以拥有的最大值。对于我来说,3在纵向布局上最大为50的全宽搜索栏上效果很好。
@谁低估:请让我知道你认为我的答案是错误的。它比其他两个答案更好。 – 2016-10-02 17:22:27
谢谢,虽然我不知道为什么一些人投了票 – Vicky 2017-01-18 17:05:10
我用Bijom的答案作为灵感。这会在拇指移动时触发,因此如果用户没有点击拇指就不会移动。希望这可以帮助。 :)
如果您有任何关于它是如何工作的问题随时发表评论。
mSeekBarSpeed.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progress = mSeekBarSpeed.getProgress();
boolean started = false; //use this variable to see whether the user clicked the right place
@Override
public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) {
if(!started){ //check to see if user clicks the right place
//if the user clicks within a specific threshold
float threshold = (float)seekBar.getMax()/seekBar.getWidth() * seekBar.getThumb().getIntrinsicWidth()/2;
if(Math.abs(progressValue - progress) < threshold){
if(fromUser){ //checks if user actually clicked it
started = true;
}
}else{
seekBar.setProgress(progress); //set to original progress
onStopTrackingTouch(seekBar); //not really necessary, keep or delete based on your needs
return; //get out of method
}
}
if(started) {
progress = progressValue; //update progress variable
System.out.println("onProgressChanged:" + progress + "/" + seekBar.getMax());
//DO WHAT YOU NEED TO DO WHEN PROGRESS IS CHANGING
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
System.out.println("onStartTracking:" + progress + "/" + seekBar.getMax());
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
System.out.println("onStopTracking:" + progress + "/" + seekBar.getMax());
//DO WHATEVER YOU NEED TO DO WHEN PROGRESS IS DONE CHANGING
started = false; //remember to set variable to false
}
});
- 1. SeekBar拇指在点击后消失
- 2. seekBar拇指在seekBar被点击时被拉伸
- 3. SeekBar拇指动画
- 4. Seekbar拇指剪辑
- 5. 用拇指对齐Android seekbar
- 6. Android Seekbar拇指位置
- 7. Android的seekbar剪辑的拇指
- 8. Android更改Seekbar拇指与Java导致拇指位置重置
- 9. 更新android中的垂直拇指Seekbar
- 10. Seekbar的拇指动画拖动
- 11. 保存SeekBar的拇指位置
- 12. 如何在android中增加seekbar的大拇指的可点击区域?
- 13. 如何获取Android SeekBar的拇指以匹配SeekBar的高度?
- 14. 安卓Seekbar拇指进度条
- 15. RelativeLayout作为定制拇指在SeekBar android
- 16. Seekbar拇指图像被切断
- 17. 在seekbar中调整大拇指尺寸
- 18. Android SeekBar拇指被剪裁/切断
- 19. seekbar拇指位置不等于进度
- 20. 使用SeekBar与两个大拇指
- 21. Android拇指不在seekbar中居中?
- 22. 如何在SeekBar拇指内显示Android SeekBar progressChanged值?
- 23. 如何在未点击拇指的情况下触发fancybox图库(用拇指)?
- 24. 设置在单杠下的seekbar中的拇指android
- 25. 使用不同的按钮更改SeekBar的拇指位置
- 26. 如何更改seekbar中的拇指颜色?
- 27. 将定制拇指定位于seekbar中心的问题
- 28. 安卓Seekbar拇指在像素中的位置
- 29. 如何在Android上着色SeekBar的拇指?
- 30. SeeKBar ListView的拇指偏移不按预期方式工作
你解决了吗? – David 2016-10-12 13:08:36