2012-10-17 33 views
7

Yatay olarak uzun bir görüntü görünümü ile nasıl bir yatay görüntüleme görünümünü gösteren bir etkinliğim var.HorizontalScrollView merkezi, yalnızca etkinlik başladığında nasıl kaydırılır?

Etkinlik başladığında, horizontalscrollview öğesinin sivriltme merkezine kaydırılmalı ve başlangıca değil.

I ve burada google arıyorum ve ben yol bulamıyorum ..

bu benim yatay kaydırma görünümüdür:

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); 

Teşekkür

cevap

5

Dene:

wvScroll.scrollTo(offsetX, 0); 

Kaydırma Görüntünün oluşturulmasından önce ayarlanacağı bir zamanlama sorunu olabilir. onCreate içinde

private Handler mHandler = new Handler(); 

yapın::

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

i scrollTo varlığından haberdar ..... ama ..... i offsetX bunu nasıl elde edebilirsiniz ???? ben senin yolunu anlamadım. Lütfen bir kod örneği gönderir misiniz? – Pableras84

+1

@ Pableras84 - offsetX = wvScroll.getWidth()/2' hakkında ne dersiniz? – Tim

3

değilim

postDelayed (kullanmak için): Bu durumda, scrollTo

ADDED çağıran bir runnable ile postDelayed() kullanmak Elbette ama muhtemelen çocuğun boyu ve genişliğine sahip olmalısın. Böyle Smth:

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