Personnalisation de languettes état dans les applications
Question
Je sais comment mettre l'icône sur chaque onglet, c'est pas de problème. J'ai aussi couru à travers ceci: [Stack Overflow sur filetage à peu près même chose] [1]
J'ai suivi l'un des liens de cette question et a trouvé [ce] [2]
A peu près, il a dit d'utiliser un sélecteur défini dans le fichier XML, bien sûr, a fait cela. Mais il n'y a pas id associé w / donc je ne suis pas sûr de savoir comment obtenir la fonction de sélection en tant que drawable pour que je puisse l'utiliser comme l'icône pour les onglets. Peut-être que je vais sur ce dans le mauvais sens. Mais voici ce que j'ai, et manque évidemment quelque chose.
<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>
Dans mon code, un onglet exemple est généré en utilisant:
host.addTab(host.newTabSpec("three")
.setIndicator("map",drawables)
.setContent(new Intent(this, Map.class)));
En ce moment étirables est juste une référence à une ressource d'image drawable. Comment puis-je le sélecteur dessinable?
Ceci est ma question [1]: Mise à jour Android Tab Icons [2]: < a href = "http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385" rel = "nofollow noreferrer"> http://groups.google.com/group/android-evelopers/browse_thread / fil / ef3bdebcb715b385
La solution
Le fichier XML que vous avez inclus ici est une façon de définir une zone de dessin qui vous permet d'intégrer une déclaration de cas. Il présente un autre drawable en fonction de l'état de la vue, il est affecté à être. En tant que drawable, vous devez enregistrer dans un fichier xml dans le dossier res/drawable
de votre projet (par exemple tabselector.xml
).
Pour l'utiliser pour le Tabhost, vous devez construire le TabActivity comme vous (comme normalement montré dans cette exemple tutoriel ).
Ensuite, lorsque vous ajoutez chaque onglet à l'hôte, vous spécifiez le drawable de tabselector
comme l'indicateur comme indiqué pour « TAB 1 » ci-dessous.
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));
Remarque: ne peut pas changer la couleur des arrière-plans onglet derrière les icônes à ce point
.Autres conseils
Vous pouvez utiliser une vue comme indicateur, de cette façon vous pouvez personnaliser la façon dont vous le souhaitez.
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));
Le premier onglet utiliser une vue comme indicateur et le second un CharSequence. Jetez un oeil à la classe TabSpec réelle ( http: // developer.android.com/reference/android/widget/TabHost.TabSpec.html ).