android - smoothScroll 方法在 onCreate() 中不起作用

标签 android

我创建了一个自定义 ScrollView ,并向其中动态添加了一些 ImageView 。我只想在初始化 View 时将 ScrollView 滚动到特定位置。我使用 scrollview.smoothScrollTo() 方法将 ScrollView 移动到特定位置。它在 Android 2.1 中运行良好,但在 Android 2.2 中无法运行。 ScrollView 总是转到初始位置。 Whwn 我在它正在工作的按钮的 OnClick Listener 中使用了相同的方法。请帮忙。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.galleryitem_details);
    hscrollView = (HorizontalScrollView)findViewById(R.id.photolist_scrollview);
            addImages();
            hscrollView.smoothScrollTo(1000, 0);

}


           private void addImages() {


    for(int i = 0; i< 10; i++) {

        View imageDetailView = View.inflate(this, R.layout.gallery_image, null);
        ImageView image = (ImageView)imageDetailView.findViewById(R.id.gallery_imagebig);
        TextView txtView = (TextView)imageDetailView.findViewById(R.id.imageBigText);
        ProgressBar spinner = (ProgressBar)imageDetailView.findViewById(R.id.gallery_scrollimage);
        txtView.setWidth(screenWidth);
             imageDetailView.setBackGroundResource(R.drawable.icon);
        txtView.setText(PHGalleryActivity.galleryImages.get(i).getImageCaption());
        imageDetailLayout.addView(imageDetailView);
    }
    /*
     *  Set the position of scroll view.
     */


}

hscrollview 没有滚动到该位置。 ScrollView 从初始位置开始。

最佳答案

问题已解决。我不知道到底是什么问题。我使用 Handler 来设置 ScrollView 的偏移值。当我们尝试在 onCreate() 中设置 ScrollView 的偏移量时会出现问题。在其他情况下,假设如果我们在 onClick() 中设置偏移值,则无需使用处理程序即可完美运行。

 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   requestWindowFeature(Window.FEATURE_NO_TITLE);
   setContentView(R.layout.galleryitem_details);
   hscrollView = (HorizontalScrollView)findViewById(R.id.photolist_scrollview);
   addImages();
   updateUI();
}


    class MHandler extends Handler {

    public void handleMessage(Message msg) {
        PHGalleryItemActivity.this.updateUI();
    }

    public void sleep(long delayMillis) {
      this.removeMessages(0);
      sendMessageDelayed(obtainMessage(0), delayMillis);
    }
  };

  private void updateUI(){
      mHandler.sleep(0);
     hscrollView.smoothScrollTo(1000, 0);

  }

关于android - smoothScroll 方法在 onCreate() 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153805/

相关文章:

java - jni CallStaticLongMethod 始终返回 0L

android - 从IntelliJ/Android Studio运行Gradle时$ PATH设置不正确

javascript - 将对话框函数包装在 deviceReady 事件监听器中后未定义

Android 诊断模式 - 如何启用它?

android - 如何使用 LiveData + Retrofit 缓存 30 分钟内的数据?

android - 如何在Android手机中导入带有私钥的自签名certificate.ca?

android - 如何防止在使用 Google Play 服务的多人在线 Android/iOS 游戏中作弊?

android - 在 gradle 7.2 中在哪里以及如何添加类路径依赖项?

Android 虚拟设备管理器意外退出

android - 如何自定义使用 "Surround with try/catch"时生成的代码?