2009-04-21 11 views
17

Wiem, jak umieścić ikonę na każdej karcie, to nie jest problem. Ja również przebiegła następująco: [przepełnienie stosu wątku na całkiem dużo samo] [1]Android: Dostosowywanie kart w stanie: Jak zrobić selektor do rysowania

I następnie jeden z linków z tym pytaniem i znaleźć [to] [2]

Dość dużo, to powiedział używać selektora zdefiniowanego w XML, z pewnością, zrobił to. Ale nie ma powiązania id w/it, więc nie jestem pewien, jak uzyskać funkcję selektora jako drawable, więc mogę go używać jako ikony dla kart. Może robię to w niewłaściwy sposób. Ale to jest to, co mam i oczywiście brakuje czegoś.

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

W moim kodu, paskiem przykładem jest generowany przy użyciu:

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

Teraz rozciągliwej jest tylko odniesienie do rozciągliwej zasobu obrazu. Jak ustawić selektor jako opcję losowania?

To jest moje pytanie [1]: Updating Android Tab Icons [2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385

Odpowiedz

20

XML zostały dołączone tutaj jest sposób definiowania rozciągliwej, który pozwala osadzić instrukcji case. Przedstawia inną opcję losowania w zależności od stanu widoku, do którego jest przypisany. W przypadku losowania należy go zapisać jako plik xml w folderze res/drawable projektu (na przykład tabselector.xml).

Aby użyć go do Tabhost, musisz skonstruować TabActivity tak, jak zwykle (jak pokazano w tym tutorial example).

Następnie, po dodaniu każdej karty do hosta, można określić, jak można rysować tabselector, jak pokazano dla "TAB 1" poniżej.

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

Uwaga: nie może zmienić kolor tła na karcie za ikony w tym momencie.

+0

Jak zwykle. Dziękuję Ci bardzo. Myślę, że nie posiadanie tego mojego folderu do rysowania było moim większym problemem. Dziękuję za dodanie kodu, który pomoże mi się poruszać. Doceniam to. – Chrispix

+0

jest to teraz możliwe? mam na myśli twoje oświadczenie na temat noty. sprawdź moje pytanie proszę: http://stackoverflow.com/questions/2810075/customizing-tab-indicator-images-in-android – Praveen

1

Możesz użyć widoku jako wskaźnika, w ten sposób możesz go dostosować tak, jak chcesz.

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

Pierwsza karta użyje widoku jako wskaźnika, a druga jako wartości charytatywnej. Spójrz na rzeczywistą klasę TabSpec (http://developer.android.com/reference/android/widget/TabHost.TabSpec.html).

+0

To działa z wersji Android 1.6. Nie zapomnij tego. –

Powiązane problemy