[英]Can Two views in same size and at same place act on screen operation at the same time?
我有一个大问题。 我做了一个列表视图。 但是我想让列表视图作用于某些操作,例如长按和触摸,以及一些基本的列表视图操作,例如上下滚动。 我尝试在列表视图上使用setOnItemLongClickListener
进行长按,并使用setOnTouchListener
进行setOnTouchListener
操作。 但是,他们不能很好地工作,特别是对setOnTouchListener
与ACTION_UP
。 当我长时间按屏幕然后进行OnItemLongClickListener
时,将调用onTouchListener
,但onTouchListener
不会调用onTouchListener
。 此外,当列表视图中的项目较少时,如果按列表视图底部的,则不会触发OnItemLongClickListener
。
因此,我尝试了另一种方法。 我制作了一个与列表视图大小相同的按钮,并使该按钮在长按和手指向上操作时起作用。 我制作了没有背景的按钮,并将其与列表视图重叠。 但是,另一个问题来了。 如果按钮在上方,则列表视图无法上下滚动。 另一方面,如果列表视图处于打开状态,则长按并向上触摸按钮不能起作用。
顺便说一句,我在OnItemLongClickListener
和onTouchListener
中都返回false。 为什么Android不在同一位置将屏幕操作分派给两个视图?
我不会只使用listview,而不会使用两个视图,但是使用良好的侦听器,您可以执行所需的操作。 假设您需要一个actionUp()方法,则可以在传统列表视图回调的末尾调用它,在这种情况下,可能是:
lv.setOnItemLongClickListener(new OnItemLongClickListener() { ...call actionUp() at the end
以及经典的结尾
lv.setOnItemClickListener(new OnItemClickListener() { ...call actionUp() at the end
以及结束时
lv.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState == SCROLL_STATE_IDLE) {
//if we went from SCROLL_STATE_TOUCH_SCROLL to SCROLL_STATE_IDLE then a touch up occured somehow
actionUp();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.