Android: Personalizzazione delle tabs in stato: Come faccio a fare un selettore un disegnatore

So come mettere l'icona in each scheda, che non è un problema. Ho anche eseguito questo: [Stack Overflow thread su praticamente la stessa cosa] [1]

Ho seguito uno dei collegamenti da quella domanda e ho trovato [this] [2]

  • Come app WhiteList in modalità Doze Android 6.0
  • Qual è la semantica di each costante InputType?
  • Come rendere un GridView estensibile in Android per espandere la width della colonna ad each estensione?
  • Come consumare i servizi WCF dipendenti dalla session utilizzando Ksoap2-Android
  • Come passare dall'attività in un gruppo di attività ad un'altra attività in android
  • Distriggersre la funzionalità pull-down-to-refresh di Chrome del Chrome
  • Abbastanza, ha detto di usare un selettore definito nel XML, certo, lo ha fatto. Ma non c'è alcuna id associata, quindi non sono sicuro di come get la function di selezione come un disegnatore in modo da poterlo utilizzare come icona per le tabs. Forse sto andando in questo modo sbagliato. Ma questo è quello che ho, e ovviamente manca qualcosa.

    <selector android:id="@+id/myselector" xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Non focused states --> <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/darklogo" /> <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/lightlogo" /> <!-- Focused states --> <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/lightlogo" /> <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/lightlogo" /> <!-- Pressed --> <item android:state_pressed="true" android:drawable="@drawable/lightlogo" /> </selector> 

    Nel mio codice viene generata una scheda di esempio utilizzando:

      host.addTab(host.newTabSpec("three") .setIndicator("map",drawables) .setContent(new Intent(this, Map.class))); 

    Adesso disegnabile è solo un riferimento a una risorsa image disegnata. Come faccio a disegnare un selettore?

    Questa è la mia domanda [1]: Aggiornamento delle icone della scheda Android [2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

  • Fragmento di partenza da ArrayAdapter
  • Trasmissione Android ACTION_DATE_CHANGED
  • Android - Formatta il timestamp in ListView con l'adattatore cursore
  • getUserMedia congelato al primo fotogramma su Android Chrome
  • Rimuovere il divisore di elenco a discesa AutoCompleteTextView
  • come fare un calendario personalizzato nell'applicazione android?
  • 2 Solutions collect form web for “Android: Personalizzazione delle tabs in stato: Come faccio a fare un selettore un disegnatore”

    L'XML che hai incluso qui è un modo per definire un disegno che consente di incorporare un'istruzione di caso. Esso presenta un diverso disegni a seconda dello stato della vista alla quale viene assegnato. Come un disegno, si dovrebbe salvare come file xml all'interno della cartella res/drawable del progetto (ad esempio tabselector.xml ).

    Per utilizzarlo per il Tabhost, è necessario build la TabActivity come normalmente (come mostrato in questo esempio di tutorial ).

    Quindi, quando si aggiunge each scheda all'host, specificare il tabselector disegnabile come indicatore come indicato in "TAB 1" in basso.

     Drawable mySelector = getResources().getDrawable(R.drawable.tabselector); mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1", mySelector).setContent(R.id.textview1)); mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 

    Nota: a questo punto non è ansible modificare il colore degli sfondi della scheda dietro le icone.

    Puoi utilizzare una vista come indicatore, in questo modo puoi personalizzarla come desideri.

     mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator(View MyView).setContent(R.id.textview1)); mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2)); 

    La prima scheda utilizzerà una visualizzazione come indicatore e la seconda un valore CharSequence. Date un'occhiata alla class TabSpec effettiva ( http://developer.android.com/reference/android/widget/TabHost.TabSpec.html ).

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.