2012-10-17 13 views
7

Ho un'attività che mostra una descrizione di howizontals con una vista di immagini orizzontalmente lunga.Come scorrere al centro di HorizontalScrollView solo all'avvio dell'attività?

Ho bisogno che quando l'attività inizia, la cartella orizzontale sia spostata al centro di essa, e non all'inizio.

sto cercando su google e qui e non riesco a trovare il modo ..

questo è il mio orizzontale vista di scorrimento:

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

Grazie

risposta

5

Prova:

wvScroll.scrollTo(offsetX, 0); 

Potrebbe esserci un problema di temporizzazione, in cui l'offset verrà impostato prima della creazione di scrollView. In tal caso, utilizzare postDelayed() con una runnable che chiama scrollTo

aggiunto:

Per utilizzare postDelayed():

private Handler mHandler = new Handler(); 

in onCreate fare:

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

so scrollTo esiste ..... ma ..... come posso ottenere quell'offsetX ???? non ho capito la tua strada Per favore, puoi pubblicare un esempio di codice? – Pableras84

+1

@ Pableras84 - che ne dite di 'offsetX = wvScroll.getWidth()/2'? – Tim

3

io non sono certo, ma probabilmente hai bisogno di avere altezza e larghezza del bambino. Smth like:

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