ScrollView里面有按钮,直到第二次点击里面的任何按钮都没有响应

时间:2010-10-30 23:28:45

标签: android scrollview

我已经花了几天时间试图解决这个问题,但我无法弄明白。问题是,简单的活动,简单的布局,ScrollView - > LinearLayout - >布局内有很多按钮(在滚动内容中)。一切都很好,但一件很棘手的事情。当我点击一个按钮时,让我们说滚动内容的顶部,然后立即向下滚动到内容的底部,然后单击那里的另一个按钮,直到我再次点击并且一切恢复正常后才会发生任何事情。这可以在任何时候重现,它是独立的代码(我尝试了20多个场景)。我还没有很多Android的经验,但看起来滚动监听器会停止onClick监听器或类似的东西。任何有关这方面的帮助将非常感激。提前谢谢。

PD。如果我以编程方式执行scrollTo(),而不是用我的手指手动滚动,一切正常,点击首先响应。这简直让我无法抗拒。

4 个答案:

答案 0 :(得分:3)

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

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

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

但没有任何帮助。 看起来这是一个使用scrollViews的系统。 这可能有助于了解发生了什么:

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没有这个问题。

任何人都有另一个想法?

答案 1 :(得分:2)

一切都表现正常。

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

答案 2 :(得分:1)

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

这在Android 2.3和4.0中都发生了......

答案 3 :(得分:0)

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

这是我能想象到的最讨厌,最脏的编程,但它在我的应用程序中运行正常。这个应用程序适用于仅运行2.2的手机,这个bug需要以某种方式修复。

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

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