Android: Anpassen des Aussehens von Tabs mit TabHost & TabWidget

7

Ich habe vorher einen Beitrag darüber veröffentlicht, aber ich habe das Gefühl, dass ich jetzt (nachdem ich einige andere Beiträge gelesen habe) besser erklären kann, was ich will und es umformuliere, damit es besser verstanden wird.

Ich habe das Tutorial über das Tab-Layout im Entwicklerhandbuch verfolgt und es geschafft, Tabs damit zu erstellen, aber ich möchte es anpassen (und ich habe auf andere Posts geschaut, aber entweder hatte der Code viele Fehler oder es hat nicht beantwortet was ich suche).

  1. Das erste Problem, das ich habe, ist, dass der Test größtenteils über dem Symbol statt darunter liegt (ich habe ein Symbol mit den Abmessungen 48x48 verwendet, wie im Entwicklerhandbuch empfohlen). Ich möchte, dass die Registerkarte mit dem Verhalten von wrap_content funktioniert. Ich möchte auch die Textgröße ändern (ich denke, dass es das Etikett genannt wird).

  2. Ich möchte Hex-Triplets verwenden, um die Hintergrundfarbe der Tabs zu ändern, um sie zwischen verschiedenen Situationen zu ändern: wenn diese Registerkarte ausgewählt ist und wenn nicht.

  3. Ich möchte die Farbe der Zeile unterhalb der Tabs ändern können. Ich konnte keine Informationen dazu finden.

Der Code, den ich derzeit zum Erstellen eines neuen Tabs verwende, lautet (aus dem Entwicklerhandbuch):

%Vor%

(Gruppen ist der Name der Registerkarte).

Hilfe wird sehr geschätzt!

    
Belgi 16.10.2011, 13:20
quelle

3 Antworten

17

Anstatt zu versuchen, die Widget-Tabs selbst anzupassen, ist hier ein alternativer Ansatz, den ich erfolgreich in einem Projekt verwendet habe, das Ihnen einige Kopfschmerzen ersparen könnte:

Die Idee ist, ein verstecktes TabWidget in Ihrem Layout zu verwenden und es mit einem angepassten LinearLayout zu steuern, das Buttons enthält. Auf diese Weise können Sie die Schaltflächen einfacher anpassen, um sie nach Ihren Wünschen zu gestalten. Sie steuern das tatsächliche TabWidget in Ihrer Aktivität innerhalb der einzelnen OnClick-Schaltfläche.

  1. Erstellen Sie Ihr Layout mit dem TabWidget und den Buttons:

    %Vor%
  2. Richten Sie den onCreate Ihrer Aktivität ein, um mit den Schaltflächen zum Anpassen der Registerkartenansichten umzugehen:

    %Vor%

Wie Sie sehen, verwende ich Zeichen für die Bilder der Schaltflächen. Mit dieser Technik sind Sie nicht auf die verfügbaren Optionen beschränkt, wenn Sie nur versuchen, das Aussehen der TabWidget-Registerkarten anzupassen, und Sie können Ihren Registerkarten ein vollständig benutzerdefiniertes Aussehen verleihen.

    
SBerg413 16.10.2011, 13:47
quelle
10

1- Verwenden Sie eine benutzerdefinierte Ansicht:

%Vor%

anstelle von:

%Vor%

Und dann definieren Sie die Ansicht für die Registerkarten in der Datei tabwidget_tabs.xml (Sie können ein ImageView vor dem textView und der textsize definieren):

%Vor%

2- Es ist nicht möglich, Hex-Triplets zu verwenden, um die Hintergrundfarbe der Registerkarten zu ändern, da es sich bei den Zeichenvorlagen nicht um Farben handelt. Sie können jedoch einen Selektor verwenden, der die Zeichenelemente ändert. und Sie können diese Lösung mit setColorFilter () und Android: Tint kombinieren und dann können Sie den Hintergrund mit Hex-Triplets auswählen: So tönen Sie eine Bitmap

tabs_bkgrd.xml:

%Vor%

Sie können eine Farbe oder eine Form definieren, tab_selected_shape.xml:

%Vor%

3- Die Linie ist auch zeichnungsfähig. Sie können die Dateien im SDK finden und sie in Ihr Projekt kopieren, nachdem Sie sie geändert haben, um die Farbe mit gimp zu ändern. Sie können diese Lösung mit setColorFilter () und android: tint kombinieren und dann können Sie den Hintergrund auch mit Hex-Triplets auswählen. Lesen: weitere Erläuterungen

android-sdk-linux_x86 / plattformen / android-7 / data / res / dropable

%Vor%

android-sdk-linux_x86 / plattformen / android-7 / data / res / drawable-mdpi

  

tab_focus.9.png (Farbe ändern)
  tab_focus_bar_left.png
  tab_focus_bar_right.9.png
  tab_press.9.png (Farbe ändern)
  tab_press_bar_left.png
  tab_press_bar_right.9.png
  tab_selected.9.png (Farbe ändern)
  tab_selected_bar_left.png tab_selected_bar_right.9.png
  tab_unselected.9.png

    
albodelu 23.10.2011 04:08
quelle
1

Was ist mit der Lösung, die ich auf diese Frage ?

Sie können das Zeichen für jede Schaltfläche anpassen, indem Sie dasselbe wie in der nativen Android-Tableiste verwenden (nach Ressourcen in Android.jar suchen, um die richtigen Zeichen zu finden). Außerdem können Sie weitere Verhalten anpassen, wie Sie möchten.

Am Ende erhalten Sie etwas, das grafisch einer Registerkarte ähnlich ist, aus einer Benutzerperspektive, aber anders als aus einer Entwicklerperspektive.

    
Rainbowbreeze 25.10.2011 13:20
quelle