在android中,我是否可以在搜索栏上注册长按监听器?
我已经这样做了:
mySeekBar.setLongClickable(true);
mySeekBar.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick (View v) {
Log.d("TEST", "Get a long click event!!!!!!!!!!!!");
}
});
但我根本看不到我的调试打印语句。关于如何实现它有什么想法吗?
谢谢。
虽然文档中没有提及,但我通过实验确定 SeekBar 不支持单击和长按侦听器。 ProgressBars 支持它们。
深入研究源代码可以看出原因:SeekBar.onTouchEvent()
不打电话super.onTouchEvent()
。它是在View.onTouchEvent()
that performClick()
and performLongClick()
酌情被称为。所以处理长按的唯一方法SeekBar
是手动检测它们。
我自己的想法是,有一个长按处理程序SeekBar
实际上没有意义。如果用户拖动“拇指”的时间超过长按阈值/延迟,突然间您会长按一次,但可能并不意味着长按。每次移动拇指时,您都可以取消并重置延迟,需要在一个位置长按几秒钟。但完全静止的情况是很少见的。事实上,握住拇指几秒钟而不移动它是很困难的。因此,您可以通过拇指位置的最小变化来重置延迟。如果必须的话我会这么做,但我必须说这是一种非常奇怪的用户体验。在 Android 中,有很多地方用户期望长按具有重要意义,但是SeekBar
不是其中之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)