2009-09-09 19 views
44

Sto usando un TableLayout. Devo avere sia lo scorrimento orizzontale che verticale per questo layout. Per impostazione predefinita sono in grado di ottenere lo scorrimento verticale nella vista ma lo scorrimento orizzontale non funziona.Come posso far scorrere il mio layout sia orizzontalmente che verticalmente?

Sto usando Android SDK 1.5 r3. Ho già provato android:scrollbars="horizontal".

Ho letto su alcuni forum che nell'aggiornamento dei cupcake è possibile lo scorrimento orizzontale.

Come posso far scorrere il mio layout in entrambe le direzioni?

risposta

112

Sono stato in grado di trovare un modo semplice per ottenere entrambi i comportamenti di scorrimento.

Ecco l'XML per esso:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:scrollbars="vertical"> 

    <HorizontalScrollView 
     android:layout_width="320px" android:layout_height="fill_parent"> 

     <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/linlay" android:layout_width="320px" 
      android:layout_height="fill_parent" android:stretchColumns="1" 
      android:background="#000000"/> 

    </HorizontalScrollView> 

</ScrollView> 
+0

Lo scorrimento orizzontale sta andando bene ... ma non ci sono barre di scorrimento orizzontali visibili .. come possiamo farlo ...? Avviso – Amit

+4

: potrebbe essere una cattiva pratica. Vedi questa domanda/risposta: http://stackoverflow.com/questions/4490821/scrollview-inside-scrollview#4492050 –

+4

@PedroLoureiro in realtà, la domanda nel link che hai postato si riferisce alla combinazione di 'ScrollView' con' ListView'. Questo perché 'ListView' ha un sacco di ottimizzazioni in esso che non giocano bene con un' ScorollView' circostante. La risposta pubblicata qui non sta usando 'ListView', quindi l'argomento collegato è irrilevante. –

0

In questo post Scrollview vertical and horizontal in android si parla di una possibile soluzione, citando:

Matt Clark ha costruito una visualizzazione personalizzata in base alla sorgente di Android, ed è sembra funzionare perfettamente: http://blog.gorges.us/2010/06/android-two-dimensional-scrollview

Attenzione che la classe in quella pagina ha un bug che calcola la larghezza orizzontale della vista. Una correzione di Manuel Hilty è nei commenti:

Soluzione: Sostituire l'istruzione on line 808 dal seguente:

final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.leftMargin + lp.rightMargin, MeasureSpec.UNSPECIFIED); 
0

Utilizzare questa:

android:scrollbarAlwaysDrawHorizontalTrack="true" 

Esempio:

<Gallery android:id="@+id/gallery" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scrollbarAlwaysDrawHorizontalTrack="true" /> 
1

è troppo tardi ma spero che il tuo problema si risolva rapidamente con questo codice. niente di più da fare basta mettere il codice sotto la scrollview.

<HorizontalScrollView 
      android:id="@+id/scrollView" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"> 

      <ScrollView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 
       //xml code 
      </ScrollView> 
    </HorizontalScrollView> 
Problemi correlati