Android 在自定义视图上正确实现GestureDetector.OnDoubleTapListener
我有一个Android 在自定义视图上正确实现GestureDetector.OnDoubleTapListener,android,Android,我有一个CustomAutoCompleteTextView,我希望能够调用showDropDown()当用户双击它时 正如标题所说,实现了GestureDetector。OnDoubletaListener听起来是个不错的解决方案,但一旦将强制方法添加到我的自定义视图中,我就不知道如何设置整个过程了 以下是实施的方法: @Override public boolean onSingleTapConfirmed(MotionEvent e) { return false
CustomAutoCompleteTextView
,我希望能够调用showDropDown()代码>当用户双击它时
正如标题所说,实现了GestureDetector。OnDoubletaListener
听起来是个不错的解决方案,但一旦将强制方法添加到我的自定义视图中,我就不知道如何设置整个过程了
以下是实施的方法:
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
我想归档这样的内容:
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
showDropDown();//AutoCompleteTextView's this line is enough but the event is never triggered
return super.doYourThing();
}
1) 创建一个新的GestureDetector()
2) 在CustomAutoCompleteTextView
中添加OnTouchListener
txt.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return false;
}
});
1) 创建一个新的GestureDetector()
2) 在CustomAutoCompleteTextView
中添加OnTouchListener
txt.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return false;
}
});
我找到了一种比实现GestureDetector更好的方法。OnDoubleTapListener
要存档此方法,请注意此解决方案适用于在自定义视图中实现双击及其所有实例
boolean firstTouch = false;
long time;
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == event.ACTION_DOWN){
if(firstTouch && (System.currentTimeMillis() - time) <= 300) {
firstTouch = false;
showDropDown();//In my case I want to showDropDown() change this line for whatever you want to do
} else {
firstTouch = true;
time = System.currentTimeMillis();
return super.onTouchEvent(event);
//return false;Use this if you dont want to call default onTouchEvent()
}
}
return super.onTouchEvent(event);
//return false;Use this if you dont want to call default onTouchEvent()
}
boolean firstTouch=false;
长时间;
@凌驾
公共布尔onTouchEvent(运动事件){
if(event.getAction()==event.ACTION\u DOWN){
如果(firstTouch&(System.currentTimeMillis()-time)我找到了一种比实现GestureDetector.OnDoubletaListener
更好的方法来存档此文件,请注意,此解决方案用于在自定义视图中实现双击及其所有实例
boolean firstTouch = false;
long time;
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == event.ACTION_DOWN){
if(firstTouch && (System.currentTimeMillis() - time) <= 300) {
firstTouch = false;
showDropDown();//In my case I want to showDropDown() change this line for whatever you want to do
} else {
firstTouch = true;
time = System.currentTimeMillis();
return super.onTouchEvent(event);
//return false;Use this if you dont want to call default onTouchEvent()
}
}
return super.onTouchEvent(event);
//return false;Use this if you dont want to call default onTouchEvent()
}
boolean firstTouch=false;
长时间;
@凌驾
公共布尔onTouchEvent(运动事件){
if(event.getAction()==event.ACTION\u DOWN){
if(firstTouch&(System.currentTimeMillis()-time)像这样仍然没有触发我想是的,但我可以猜测,因为你没有共享一个代码剪辑,显示你在哪里以及如何添加/创建你的TextView我相信这将工作,但它对我有一个问题,抱歉没有指定,我有几个CustomAutoCompleteTextView,我希望他们所有人都这样做,所以这种方式将是很多的work.我想要的是在扩展AutoCompleteTextView的自定义类中实现双击功能。我刚刚找到了一种方法!为您的时间伙伴共享一个min.PD:Ty!这样仍然不会触发我想是的,但我可以猜,因为您没有共享显示您添加/创建TextView的位置和方式的代码,我相信这将我工作,但它对我来说有一个问题,很抱歉没有指定,我有几个CustomAutoCompleteTextView,我希望他们都这样做,这样做将是大量的工作。我想要的是在自定义类中实现双击功能,扩展AutoCompleteTextView。我刚刚找到一种方法!在一分钟内共享。PD:Ty为您的时间伙伴!