繁体   English   中英

同一尺寸和相同位置的两个视图可以同时作用于屏幕操作吗?

[英]Can Two views in same size and at same place act on screen operation at the same time?

我有一个大问题。 我做了一个列表视图。 但是我想让列表视图作用于某些操作,例如长按和触摸,以及一些基本的列表视图操作,例如上下滚动。 我尝试在列表视图上使用setOnItemLongClickListener进行长按,并使用setOnTouchListener进行setOnTouchListener操作。 但是,他们不能很好地工作,特别是对setOnTouchListenerACTION_UP 当我长时间按屏幕然后进行OnItemLongClickListener时,将调用onTouchListener ,但onTouchListener不会调用onTouchListener 此外,当列表视图中的项目较少时,如果按列表视图底部的,则不会触发OnItemLongClickListener

因此,我尝试了另一种方法。 我制作了一个与列表视图大小相同的按钮,并使该按钮在长按和手指向上操作时起作用。 我制作了没有背景的按钮,并将其与列表视图重叠。 但是,另一个问题来了。 如果按钮在上方,则列表视图无法上下滚动。 另一方面,如果列表视图处于打开状态,则长按并向上触摸按钮不能起作用。

顺便说一句,我在OnItemLongClickListeneronTouchListener中都返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM