Ich habe ein Geschwätz darüber gesehen, aber nichts Bestimmtes. Gibt es eine Möglichkeit, die Registerkarten in einem TabWidget am unteren Bildschirmrand zu platzieren? Wenn das so ist, wie?
Ich habe Folgendes versucht, aber nicht funktioniert:
a) Setzen des Tabwidgets unterhalb des Framelayouts
b) Setzen der Schwerkraft des Tabwidgets auf "unten"
Vielen Dank! llappall
Antworten:
Hier ist die einfachste, robusteste und skalierbarste Lösung, um Registerkarten am unteren Bildschirmrand anzuzeigen.
layout_height
zuwrap_content
sowohl FrameLayout und TabWidgetandroid:layout_weight="1"
android:layout_weight="0"
(0 ist die Standardeinstellung, jedoch zur Hervorhebung, Lesbarkeit usw.).android:layout_marginBottom="-4dp"
(um den unteren Teiler zu entfernen)Vollständiger Code:
quelle
layout_weight=1
im FrameLayout. Auf diese Weise kann das Registerkartensteuerelement zuerst seine Höhe aus dem LinearLayout "beanspruchen".android:layout_marginBottom="-5px"
dem TabWidget hinzu. Dadurch wird das TabWidget 5 Pixel vom unteren Bildschirmrand entfernt, gerade genug, damit Sie den Teiler nicht sehen. Das FrameLayout gleicht die Größe aus, sodass es perfekt funktioniert. Ich bin mir nicht sicher, ob sich die Größe des Teilers bei größeren Geräten ändert oder nicht. Möglicherweise müssen Siedp
anstelle von verwendenpx
.Probieren Sie es aus;) Sehen Sie sich einfach den Inhalt des FrameLayout (@ id / tabcontent) an, da ich nicht weiß, wie es beim Scrollen funktioniert ... In meinem Fall funktioniert es, weil ich ListView als Inhalt meiner Registerkarten verwendet habe . :) Ich hoffe es hilft.
quelle
Es gibt eine Möglichkeit, die Linie zu entfernen.
1) Folgen Sie diesem Tutorial: Android-Tabs-mit-Fragmenten
2) Wenden Sie dann die oben von Leaudro vorgeschlagene RelativeLayout-Änderung an (wenden Sie die Layout-Requisiten auf alle FrameLayouts an).
Sie können der tab.xml in Element 1 auch eine ImageView hinzufügen und den Registerkarten ein iPhone-ähnliches Aussehen verleihen.
Hier ist ein Screenshot von dem, woran ich gerade arbeite. Ich habe noch einige Arbeiten zu erledigen, hauptsächlich eine Auswahl für die Symbole zu treffen und eine gleichmäßige horizontale Verteilung sicherzustellen, aber Sie haben die Idee. In meinem Fall verwende ich Fragmente, aber für eine Standard-Registerkartenansicht sollten dieselben Prinzipien gelten.
quelle
Ich bin mir nicht sicher, ob es für alle Android-Versionen funktioniert (insbesondere für Versionen mit benutzerdefinierten Benutzeroberflächen), aber ich konnte den grauen Balken unten durch Hinzufügen entfernen
zum TabWidget XML ...
quelle
Für alle unter Ihnen, die versuchen, die Trennlinie des tabWidget zu entfernen, ist hier ein Beispielprojekt (und das entsprechende Tutorial), das sich hervorragend zum Anpassen der Registerkarten und damit zum Entfernen von Problemen eignet, wenn sich die Registerkarten unten befinden. Eclipse-Projekt: Android-Custom-Tabs ; Ursprüngliche Erklärung: Blog ; Hoffe das hat geholfen.
quelle
Es gibt zwei Möglichkeiten, Registerkarten am unteren Rand einer Registerkartenaktivität anzuzeigen.
Bitte überprüfen Sie den Link für weitere Details .
quelle
quelle
Dies ist möglicherweise nicht genau das, wonach Sie suchen (es ist keine "einfache" Lösung, Ihre Tabs an den unteren Bildschirmrand zu senden), aber dennoch eine interessante alternative Lösung, die ich Ihnen mitteilen möchte:
ScrollableTabHost verhält sich wie TabHost, verfügt jedoch über eine zusätzliche Bildlaufansicht, um mehr Elemente aufzunehmen ...
Vielleicht finden Sie in diesem Open-Source-Projekt eine Antwort auf Ihre Frage. Wenn ich etwas leichter sehe, komme ich zu Ihnen zurück.
quelle
Ich hatte das gleiche Problem mit Android-Registerkarten, als ich versuchte, sie am unteren Bildschirmrand zu platzieren. Mein Szenario bestand darin, keine Layoutdatei zu verwenden und die Registerkarten im Code zu erstellen. Ich wollte auch Aktivitäten von jeder Registerkarte auslösen, die mit anderen Ansätzen etwas zu komplex erschienen. Hier ist der Beispielcode, um das Problem zu lösen:
Hinzufügen von Tabs in Android und Platzieren
quelle
Ja, siehe: Link , aber er hat XML-Layouts verwendet, keine Aktivitäten, um eine neue Registerkarte zu erstellen. Geben Sie also seinen XML-Code ein (setzen Sie paddingTop für FrameLayout - 0px) und schreiben Sie den Code:
}}
quelle
Ich empfehle, diesen Code für eine stabile Arbeit zu verwenden. Er wurde für verschachtelte Fragmente in Registerkarten (z. B. verschachteltes MapFragment) optimiert und unter "Aktivitäten nicht beibehalten" getestet: https://stackoverflow.com/a/23150258/2765497
quelle