为什么ScrollView有时(!)在调用scrollTo时不滚动(在onClick事件中)

时间:2012-04-25 15:57:22

标签: android onclick scrollview

所以我在屏幕右侧有这个按钮(ImageViewonClick方法),当我向左拉它时会延伸到SeekBar,您可以在其中选择一天中的时间。为了创建这个,我创建了一个ScrollView,其水平LinearLayout左侧是透视视图,右侧是“按钮”+ SeekBar(大部分位于屏幕外)。 “按钮”包含OnTouchOnClick听众。

在onTouch中,滚动视图被告知smoothScroll根据手指移动的位置找到正确的位置。当您移动小于某个阈值并释放时,将调用onClick。

在onClick中,我已将滚动视图告知smoothScrollTo / scrollTo / fullScroll。 fullScroll没有工作。 smoothScrollTo大部分时间都在一台设备上运行(HTC Desire with Android 2.2.2),但从未在另一台设备(三星Galaxy Tab(旧版本)和Android 2.2上)使用ON ONCLICK(?)。 scrollTo有时可以在两个设备上运行...我确信onClick被调用,因为我在启动时记录它,并且在告诉ScrollView滚动后直接记录。

我尝试将scrollTo发布到runnable和延迟runnable中的ScrollView

scrollView.postDelayed(new Runnable() {

   @Override
   public void run() {
       scrollView.scrollTo(left, 0);
       Log.d("SomeTag", "The scroller should scroll to: "+left);
   }
}, 200);

但这种情况经常发生(有时候),因为没有张贴......

我不知所措。我习惯使用Android并习惯不同设备的行为方式不同,但我不习惯在同一设备上同时使用“有时”工作,“有时”不会......任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

请参阅this answer

如果在调用方法时进行了一些布局更改,则

ScrollView.scrollTo()可能无法正常工作。你是对的,使用postDelayed()你无法保证布局的变化总是在相同的延迟时间内完成。