2009-04-21 12 views
17

Ich weiß, wie Sie das Symbol auf jeder Registerkarte setzen, das ist kein Problem. Ich lief auch über diese: [Stack-Überlauf Gewinde ziemlich gleiche Sache auf] [1]Android: Anpassen von Registerkarten im Status: Wie mache ich einen Selektor zu einem Zeichensatz

Ich folgte auf einen der Links von dieser Frage und fand [diese] [2]

Ziemlich viel, sagt einen im XML definierten Selektor zu verwenden, sicher, tat das. Aber es ist keine ID damit verbunden, daher bin ich mir nicht sicher, wie ich die Auswahlfunktion als Zeichenfunktion erhalten kann, damit ich sie als Symbol für die Registerkarten verwenden kann. Vielleicht gehe ich das in die falsche Richtung. Aber das ist es was ich habe und offensichtlich etwas vermisse.

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

In meinem Code ist ein Beispiel Reiter erzeugt:

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

Gerade jetzt drawable nur ein Verweis auf eine ziehbar Bildressource ist. Wie mache ich den Selector zeichnbar?

Das ist meine Frage [1]: Updating Android Tab Icons [2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

Antwort

20

Die XML Sie hier aufgenommen haben, ist eine Möglichkeit, eine ziehbar zu definieren, dass Sie eine Case-Anweisung einbetten lässt. Je nach Status der Ansicht, der sie zugewiesen ist, wird eine andere Zeichenfläche angezeigt. Als Zeichensatz sollten Sie ihn als XML-Datei im Ordner res/drawable Ihres Projekts speichern (z. B. tabselector.xml).

Um es für den Tabhost zu verwenden, müssen Sie die TabActivity wie gewohnt erstellen (wie in diesem tutorial example gezeigt).

Wenn Sie dann jede Registerkarte zum Host hinzufügen, geben Sie tabselector als Indikator ein, wie unten für "TAB 1" gezeigt.

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

Hinweis: Sie können nicht ändern die Farbe der Registerkarte Hintergründe hinter den Symbolen an dieser Stelle.

+0

Wie üblich. Vielen Dank. Ich denke nicht, dass es mein mein ziehbarer Ordner war mein größeres Problem. Danke, dass du Code mitbringst, um mich in Bewegung zu bringen. Ich weiß das zu schätzen. – Chrispix

+0

ist das jetzt möglich? Ich meine deine Anmerkung Aussage. Überprüfen Sie meine Frage bitte: http://stackoverflow.com/questions/2810075/customizing-tab-indicator-images-in-android – Praveen

1

Sie können eine Ansicht als Indikator verwenden, damit Sie sie nach Ihren Wünschen anpassen können.

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

Die erste Registerkarte verwendet eine Ansicht als Indikator und die zweite eine CharSequence. Werfen Sie einen Blick auf die eigentliche TabSpec-Klasse (http://developer.android.com/reference/android/widget/TabHost.TabSpec.html).

+0

Dies funktioniert von Android 1.6-Version. Vergiss es nicht. –