Android: anpassen das Aussehen der Tabs mit TabHost & TabWidget
Ich, hat einen Beitrag über diese vor, aber ich spüre, dass ich jetzt (nach der Lektüre einige andere Beiträge) besser erklären, was ich will und formuliere es so wird es sein besser zu verstehen.
Folgte ich dem tutorial über die Registerkarte Layout auf der dev-guide, und ich schaffte es, um Register zu erstellen, aber ich will ein paar Anpassungen, um es (und ich habe Blick auf andere Beiträge, aber entweder war der code viele Fehler oder es gab keine Antwort, was ich Suche).
-
Das erste problem das ich habe ist, dass der test in den meisten Bereichen über dem Symbol, statt von unten (ich habe ein icon, Abmessungen 48x48, wie empfohlen, auf der dev-guide). Ich will das tab mit zu handeln, wie wrap_content tut.
Ich will mich auch ändern Sie den text Größe (ich glaube es nennt sich das label). -
Will ich mit hex triplets ändern Sie die Hintergrundfarbe des tabs, um es zu ändern zwischen zwei Situationen : wenn diese Registerkarte ist, der ausgewählt ist und wenn es nicht ist.
-
Ich möchte in der Lage sein zu ändern die Farbe der Linie, die sich unterhalb der Registerkarten, ich konnte nicht finden alle Informationen auf, wie dies zu tun.
Den code, den ich verwende derzeit zum erstellen einer neuen Registerkarte (aus dem dev-guide):
intent = new Intent().setClass(this, GroupsActivity.class);
spec = tabHost.newTabSpec("groups").setIndicator("groups",
res.getDrawable(R.drawable.ic_tab_groups))
.setContent(intent);
tabHost.addTab(spec);
(- Gruppen ist der name der Registerkarte).
Hilfe wird sehr geschätzt!
- België: der Titel ist einer der wichtigsten Teile Ihrer Frage. Bitte mindestens schnell zu überprüfen, bevor Sie es Absenden.
- was war falsch mit ihm ? (Ich Frage besser zu wissen für die Zukunft). vielen Dank für die Bearbeitung und helfen
- Klicken Sie auf den link mit der Zeit Informationen nur auf der rechten Seite "bearbeitet" über meine "Signatur" wird, zeigt es die edit-history.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt zu versuchen, anpassen der widget-tabs selbst, hier ist eine Alternative Methode, die ich verwendet habe erfolgreich an einem Projekt, das kann sparen Sie einige Kopfschmerzen:
Die Idee ist, eine versteckte TabWidget in Ihrem layout und kontrollieren Sie mit einem maßgeschneiderten LinearLayout mit Schaltflächen. Auf diese Weise können Sie leicht anpassen, die Tasten zu schauen, aber Sie möchten. Sie Steuern die tatsächlichen TabWidget in Ihrer Aktivität innerhalb der einzelnen button-OnClick.
Erstellen Sie Ihr layout mit der TabWidget und die Tasten:
Einrichten der onCreate Ihrer Tätigkeit zu behandeln, verwenden Sie die Schaltflächen zum anpassen der Registerkarte Ansichten:
Wie Sie sehen können, bin ich mit drawables für die Bilder der buttons auf und ab. Mit dieser Technik, Sie sind nicht beschränkt auf die verfügbaren Optionen, wenn Sie einfach nur versuchen, um das Aussehen der TabWidget-tabs und Sie können eine völlig custom-look für Ihre tabs.
HorizontalScrollView
fürLinearLayout
und nun kann ich nicht machen, dass die ausgewählte Taste in der Mitte war, haben Sie Anregungen? Dank1 - Verwenden Sie eine benutzerdefinierte Ansicht:
statt:
Und definieren Sie dann die Ansicht für die tabs in der Datei tabwidget_tabs.xml (definieren Sie eine Bildansicht vor die textView und die textsize):
2 - Es ist nicht möglich hex triplets ändern Sie die Hintergrundfarbe des tabs, da sind drawables nicht mit Farben. Allerdings können Sie mithilfe einer Auswahl, die änderungen des drawables. und kombinieren Sie diese Lösung mit setColorFilter() und android:Farbton auswählen und dann kannst du den hintergrund mit hex triplets: Wie man ein bitmap-Farbton
tabs_bkgrd.xml:
Können Sie festlegen, eine Farbe oder eine Form, tab_selected_shape.xml:
3 - Die Linie ist ein drawable zu. Sie finden die Dateien im sdk und kopieren Sie Sie in Ihr Projekt nach ändern Sie Sie, ändern Sie die Farbe mit gimp. Kombinieren Sie diese Lösung mit setColorFilter() und android:Farbton auswählen und dann kannst du den hintergrund mit hex triplets zu. Lesen:
weitere Erklärung
android-sdk-linux_x86/platforms/android-7/data/res/drawable
android-sdk-linux_x86/platforms/android-7/data/res/drawable-mdpi
Was ist die Lösung, die ich vorgeschlagen diese Frage?
Können Sie anpassen, die drawable jeder einzelnen Taste mit der gleichen verwendet werden, die durch native Android-Tab-Leiste(für die Suche nach Ressourcen in Android.jar finden Sie den richtigen drawables), plus können Sie zusätzliche Verhalten, wie Sie es wünschen.
Am Ende, Sie erhalten etwas, das grafisch ähnlich einer tabbar ausgedehnt werden, ist aus Sicht der Benutzer, sondern wirkt sich anders aus Entwickler-Perspektive.