【问题标题】:Android: ListViews inside Gallery - how to get scrolling, clicking and swiping like in GTalk?Android:Gallery 中的 ListView - 如何像在 GTalk 中一样滚动、点击和滑动?
【发布时间】:2011-08-04 07:13:50
【问题描述】:

我正在编写一个 Android 应用程序,并在 Gallery 中使用 ListViews。 ListViews 代表聊天窗口。我真的希望能够在图库中的聊天窗口之间滑动,同时还能够在 ListView 中滚动或单击单个消息。 在搜索时,我在 Stackoverflow 上找到了一个人,他很友善地为这个问题提供了解决方案: Android - ListView inside Gallery makes the scrolling not Smooth

他的 BetterGallery 几乎适合我。单击列表项有效,滚动列表视图有效。我目前有两个问题需要解决:

1) 在图库中滑动时,移动不流畅,并且不确定最终会显示哪个列表视图。

2) 您可以在同一手指运动中同时滑动和滚动,例如沿对角线移动手指。

作为第 2 点的注释:我正在寻找的行为类似于您可以在 GTalk 中找到的聊天窗口。在 GTalk 中,您既可以在聊天中滚动,也可以在不同聊天之间滑动,一次完成。这意味着如果您开始滚动,从一侧移动到另一侧的手指将不会滑动。同样,在您松开手指并开始新手势之前,开始滑动会阻止滚动。

有没有人实现了与 GTalk 中的工作方式类似的东西?

祝你好运!

【问题讨论】:

    标签: android listview scroll gallery swipe


    【解决方案1】:

    我也有同样的问题。而且解决方案并不简单。

      • 将列表视图设置为在触摸模式下不可聚焦。

      listView.setFocusableInTouchMode(false);

      • 如果您需要焦点,请从 onItemSelected 侦听器中调用它。


    2. - 使用 OnInterceptTouchEvent 从您的孩子那里获取触摸事件。并对 onScroll 和 onTouchEvent 进行一些修改

     
        OnItemSelectedListener mOnItemSelected = new OnItemSelectedListener()
                {
    @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { view.requestFocusFromTouch(); } @Override public void onNothingSelected(AdapterView parent) {
    } };

        
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            onTouchEvent(ev);
            return scrollingHorizontally;
        }
    
    

    @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(Math.abs(distanceX)>Math.abs(distanceY) || scrollingHorizontally == true){ scrollingHorizontally = true; super.onScroll(e1, e2, distanceX, distanceY); } return scrollingHorizontally; }

    @Override public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: scrollingHorizontally = false; break; default: break; } super.onTouchEvent(event); return scrollingHorizontally; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      相关资源
      最近更新 更多