7

Sono nuovo di Android e nel mio progetto ho requisitoCome impostare scheda selezionata deve essere in mezzo

cioè ho sei schede, ma mi mostra solo tre schede sullo schermo e per il riposo delle schede che uso ScrollView. Qui la voce della scheda selezionata deve essere nel mezzo, prima quando entrando nella schermata I mostra la voce centrale è attiva (cioè selezionata).

Va bene, ma come è possibile impostare questo elemento centrale come mezzo quando faccio scorrere le schede rimanenti?

chiunque può dare suggerimenti per ottenere una soluzione.

+0

hai guardato in utilizzando un ascoltatore che rileverà lo scorrimento e poi si imposta manualmente la selectedTab nel metodo di callback? – hovanessyan

+0

Grazie per il suggerimento, ma non ho lavorato gli ascoltatori a seguito di scorrimento (ho dichiarato Horizaontalscrollview in XML) TestHorizontalScrollView sView = (TestHorizontalScrollView) findViewById (R.id.horizontalScrollView); public class TestHorizontalScrollView estende HorizontalScrollView { \t TestHorizontalScrollView pubblica (Context contesto) { \t super (contesto); \t} \t @Override \t vuoto protetta onScrollChanged (int l, int t, int Oldl, int oldt) { \t \t \t super.onScrollChanged (l, t, Oldl, oldt); \t} \t} – Gopi

+0

http://stackoverflow.com/q/8181828/1007273 dai uno sguardo qui, penso che troverai idee utili. – hovanessyan

risposta

0

Non penso che il tabhost abbia un comportamento del genere. Come so, tabhost può funzionare senza controller di tabulazione. Per il tuo caso, una galleria sostituirà il controller di tabulazione, come sai, l'elemento selezionato nella galleria rimane sempre nel mezzo. Quindi, nel listener di eventi della galleria, scrivi un codice per controllare quale scheda verrà mostrata in tabhost.

7

check out this :)

public void centerTabItem(int position) { 
    tabHost.setCurrentTab(position); 
    final TabWidget tabWidget = tabHost.getTabWidget(); 
    final int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
    final int leftX = tabWidget.getChildAt(position).getLeft(); 
    int newX = 0; 

    newX = leftX + (tabWidget.getChildAt(position).getWidth()/2) - (screenWidth/2); 
    if (newX < 0) { 
     newX = 0; 
    } 
    horizontalScrollView.scrollTo(newX, 0); 
} 
+0

funziona molto bene. ma come faccio a farlo accadere per la prima volta quando il tabhost è configurato e inizializzato. diciamo che voglio initailioze l'host di schede con l'indice corrente come 5 – Sunny

+0

Dopo l'installazione, puoi chiamare centerTabItem (5) direttamente –