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

时间:2015-05-17 10:08:40

标签: android

我遇到了一个大问题。我做了一个列表视图。但我想让列表视图在长按和触摸等一些操作上运行,以及一些基本的列表视图操作,如向上和向下滚动。 我尝试在列表视图中使用setOnItemLongClickListener进行长按,setOnTouchListener进行补足操作。但是,它们效果不佳,尤其是setOnTouchListener ACTION_UP。当我长时间按屏幕然后再触摸屏时,会调用OnItemLongClickListener,但根本不会调用onTouchListener。此外,当列表视图中的项目很少时,如果在列表视图的底部按下,则不会触发OnItemLongClickListener

所以,我尝试了另一种方式。我制作了一个与列表视图大小相同的按钮,并使按钮在长按和手指上起作用。我创建了没有背景的按钮,并将其与列表视图重叠。但是,另一个问题来了。如果按钮位于上方,则列表视图无法上下滚动。另一方面,如果列表视图已启动,则按钮不能在长按和触摸时起作用。

顺便说一句,我在OnItemLongClickListeneronTouchListener都返回false。 为什么Android不会将屏幕操作分配到同一位置的两个视图?

1 个答案:

答案 0 :(得分:0)

不是使用两个视图,我只会坚持使用listview,但是使用好听众,你可以做你想做的事。假设你想要一个actionUp()方法,你可以在经典的listview回调结束时调用它,在你的情况下,可能是:

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) {

    } 
});