9

我已经几天试图解决这个问题,但我无法弄清楚。问题是,简单的活动,具有简单的布局,ScrollView -> LinearLayout -> 和布局内的许多按钮(在滚动内容内)。一切正常,但有一件棘手的事情。当我单击一个按钮时,假设在滚动内容的顶部并立即向下滚动到内容的底部并单击那里的另一个按钮,直到我再次单击并且一切都恢复正常之前什么都没有发生。这可以随时复制,并且与代码无关(我已经尝试了 20 多个场景)。我在 Android 方面还没有太多经验,但看起来滚动侦听器停止了 onClick 侦听器或类似的东西。对此的任何帮助将不胜感激。先感谢您。

PD。如果我以编程方式执行scrollTo(), 而不是用手指手动滚动,则一切正常,并且单击会在第一次触摸时做出响应。这简直让我不知所措。

4

4 回答 4

3

我也有同样的问题。我不同意这是一个褪色的滚动条问题。如果禁用淡入淡出,也会发生同样的事情。

在themes.xml中尝试了几种方法:

<item name="android:scrollbarDefaultDelayBeforeFade">100</item>
<item name="android:scrollbarFadeDuration">100</item>
<item name="android:fadeScrollbars">true</item>

但没有任何帮助。似乎这是带有滚动视图的系统问题。这可能有助于了解发生了什么:

setOnScrollListener(new OnScrollListener(){
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
      // TODO Auto-generated method stub
    }
    public void onScrollStateChanged(AbsListView view, int scrollState) {
      // TODO Auto-generated method stub
      if(scrollState == 0) Log.i("a", "scrolling stopped...");
    }
  });
}

但这(不幸的是)无助于克服问题 - 而是解释它。

注意:仅当您使用 ScrollView 时才会发生这种情况。ListView 没有这个问题。

有人有其他想法吗?

于 2010-12-19T10:08:22.680 回答
2

一切正常。

当您开始滚动时,ScrollView将声明触摸事件,直到您停止触摸屏幕一段时间。在 Android 2.2 中,您将知道何时认为滚动完成,因为右侧的滚动条会逐渐消失。

于 2010-10-31T17:24:41.257 回答
1

我遇到了这样的情况。我有一个 ExpandableListView,它只是表现正常。当我将手机旋转到水平并向后旋转时,一组 ExpandableListView 中的某些项目将不会响应点击事件。除非我滚动列表视图,或者单击这些项目的组项目,否则该事件将调度到我之前单击的项目,并正确执行单击侦听器代码。

这发生在 android 2.3 和 4.0 中......

于 2012-02-13T10:19:47.857 回答
0

我已经能够通过覆盖 onScrollChanged 来解决此问题,然后在达到边界时通过 OnTouchEvent 向 ScrollView 发送 MotionEvent 以模拟用户触摸。

这是我能想象到的最老套、最肮脏的编程,但它在我的应用程序中运行良好。此应用程序仅适用于运行 2.2 的手机,需要以某种方式修复此错误。

如果有人有更好的解决方案,请告诉我。

编辑:这个问题只在 2.2 中,他们已经在 2.3 中修复了,在 2.1 中不是问题。

于 2011-05-17T10:15:34.317 回答