2012-10-17 21 views
7

我有一个活动,显示一个水平长的imageview howizontalscrollview。如何仅在活动开始时滚动到Horizo​​ntalScrollView的中心?

我需要当活动开始时,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); 

感谢

回答

5

尝试:

wvScroll.scrollTo(offsetX, 0); 

可能存在计时问题,其中偏移量将在创建scrollView之前设置。在这种情况下,使用postDelayed()runnable调用scrollTo

新增:

要使用postDelayed():

private Handler mHandler = new Handler(); 
中的onCreate

做:

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

我知道scrollTo存在.....但.....我怎么能得到这个偏移量?我不明白你的方式。请,你能发表一个代码示例吗? – Pableras84

+1

@ Pableras84 - 'offsetX = wvScroll.getWidth()/ 2'怎么样? – Tim

3

我不是当然,但可能你需要有高度和宽度的孩子。 Smth那样:

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