使用手势可以很好解决这个问题package com.kohler.launcher.view;
import com.kohler.launcher.R;
import com.library.util.LogUtil;
import android.content.Context;
import android.gesture.GestureOverlayView;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.widget.ListView;
public class CalendarListView extends ListView implements OnGestureListener
{
public interface LongOnClickCallback
{
public void onLongOnClick();
public void onClick();
}
private LongOnClickCallback callback;
public void setCallback(LongOnClickCallback callback)
{
this.callback = callback;
}
public CalendarListView(Context context)
{
super(context);
init();
}
public CalendarListView(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
public CalendarListView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
private void init()
{
detector = new GestureDetector(getContext(), this);
}
private GestureDetector detector;
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
detector.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onDown(MotionEvent e)
{
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
return false;
}
@Override
public void onLongPress(MotionEvent e)
{
// LogUtil.e(" CalendarListView 长按事件");
//长按模式
if (callback != null)
{
callback.onLongOnClick();
}
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
// LogUtil.e(" CalendarListView onScroll");
return false;
}
@Override
public void onShowPress(MotionEvent e)
{
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
LogUtil.e(" CalendarListView 点击事件");
if (callback != null)
{
callback.onClick();
}O
return false;
}
}