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