【问题标题】:Why is ScrollView sometimes (!) not scrolling when scrollTo is called (in an onClick event)为什么 ScrollView 有时(!)在调用 scrollTo 时不滚动(在 onClick 事件中)
【发布时间】:2012-04-25 15:57:21
【问题描述】:

所以我在屏幕右侧有这个按钮(ImageViewonClick 方法),当我将它拉到左边时,它会延伸到SeekBar,您可以在其中选择一天中的时间。为了创建这个,我制作了一个ScrollView 和一个水平的LinearLayout,左侧是透视视图,右侧是“按钮”+SeekBar(主要在屏幕之外)。 “按钮”有一个 OnTouchOnClick 监听器。

在 onTouch 中,滚动视图会根据手指移动的位置来平滑滚动到正确的位置。当您移动小于某个阈值并释放时,就会调用 onClick。

在 onClick 中,我已将滚动视图告知 smoothScrollTo / scrollTo / fullScroll。 fullScroll 从来没有工作过。 smoothScrollTo 大部分时间都在一台设备上工作(HTC Desire 与 Android 2.2.2),但从未在另一台设备(三星 Galaxy Tab(旧款)与 Android 2.2)上的 ONCLICK(?)上工作。 scrollTo 有时适用于两种设备...我确信 onClick 在我记录它启动时被调用,并且在告诉 ScrollView 滚动之后直接调用。

我已尝试将 scrollTo 以可运行和延迟可运行的形式发布到 ScrollView

scrollView.postDelayed(new Runnable() {

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

但这与不发布它一样频繁(有时)...

我很困惑。我习惯于使用 Android 并习惯于不同的设备表现不同,但我不习惯在同一设备上“有时”工作而“有时”不工作...任何帮助将不胜感激!

【问题讨论】:

    标签: android onclick scrollview


    【解决方案1】:

    this answer

    ScrollView.scrollTo() 如果在调用该方法时进行了一些布局更改,则可能无法正常工作。你是对的,使用postDelayed() 你不能保证布局更改总是在相同的延迟时间内完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      相关资源
      最近更新 更多