【问题标题】:How to scroll to center of HorizontalScrollView only when activity starts?仅在活动开始时如何滚动到 Horizo​​ntalScrollView 的中心?
【发布时间】:2012-10-08 02:51:57
【问题描述】:

我有一个显示 howizontalscrollview 和水平长图像视图的活动。

我需要在activity启动时,horizo​​ntalscrollview必须滚动到它自身的中心,而不是滚动到开始处。

我在谷歌和这里搜索,我找不到路..

这是我的水平滚动视图:

    HorizontalScrollView wvScroll = new HorizontalScrollView(this);
    wvScroll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
    iv.setImageBitmap(Util.getRemoteImage("http://mywebsite.com/90.gif"));
    iv.setScaleType(ScaleType.CENTER_CROP);
    wvScroll.addView(iv);
    mainLayout.addView(wvScroll);

谢谢

【问题讨论】:

    标签: android android-layout scrollview horizontalscrollview


    【解决方案1】:

    试试:

    wvScroll.scrollTo(offsetX, 0);
    

    可能存在时间问题,偏移量将在创建滚动视图之前设置。在这种情况下,将postDelayed() 与调用scrollTorunnable 一起使用

    添加:

    使用 postDelayed():

    private Handler mHandler = new Handler();
    

    在 onCreate 中做:

    mHandler.postDelayed(new Runnable(){
        public void run() {
           wvScroll.scrollTo(offsetX, 0);
        }
    }, 1000);
    

    【讨论】:

    • 我知道scrollTo存在.....但是.....我怎样才能获得那个offsetX????我不明白你的方式。请问,你能发布一个代码示例吗?
    • @Pableras84 - offsetX = wvScroll.getWidth()/2 怎么样?
    【解决方案2】:

    我不确定,但可能你需要有孩子的高度和宽度。像这样的:

    int centerX = wvScroll.getChildAt(0).getWidth()/2;
    int centerY = wvScroll.getChildAt(0).getHeight()/2;
    wvScroll.scrollTo(centerX, centerY);
    

    【讨论】:

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