Android ActionBar Höhe Ausgabe
Ich habe ein seltsames Problem mit, herauszufinden, die Höhe des ActionBar
. Ich habe ein paar Teile in meiner app, wo etwas positioniert ist rechts unten die ActionBar
, und ich bin auch mit Chris Dämonen " Bibliothek actionbar-pulltorefresh.
Werde ich das Beispiel aus dem pull-to-refresh-Bibliothek. Ich erlebe genau dasselbe wie die Frage hier, es sei denn, ich Tue alles genau, wie der Reiseführer sagt zu mit Fragments
. Es berechnet die Höhe der ActionBar
etwa die Hälfte von dem, was es sein sollte. Auch in einem anderen Teil der app, bin ich mit der Positionierung des PopupWindow
unterhalb der ActionBar
, so nenne ich die getHeight()
und die Verwendung dieser position für meine Fenster, bekomme ich das gleiche Problem wie mit der pull-to-refresh-Bibliothek.
So, dass macht mich denke, dass es etwas damit zu tun, wie die ActionBar
Höhe gemessen wird, und es sich möglicherweise um eine Stil-Frage.
Aber hier, wo es interessant wird. Wenn ich drehen Sie die Geräte auf Querformat-Modus, es zahlen die Höhe fein und stellt alles, wo es sein sollte, von diesem Punkt an, auch wenn ich wieder zurück drehen auf hochformat. es ist plötzlich behoben, bis ich die app starten und es töten, aus dem Speicher, und starten Sie wieder frisch.
Jemand hatte etwas ähnliches passieren?
HINWEIS: ich bin mit der appcompat-Bibliothek jetzt, aber ich war mit ActionBarSherlock vor, sowie die grundlegenden ActionBar irgendwann, und alle Szenarien gab das gleiche Ergebnis.
UPDATE 1: ich die gleichen Ergebnisse erhalten, von den Fragen, die hier, hier, und hier. Aber ich Tue alles, was die README sagt, so zu tun ich bin mir ziemlich sicher, dass es etwas damit zu tun, wie mein Gerät misst die ActionBar
Höhe.
UPDATE 2: verwendet habe ich das actionbar-PullToRefresh-Bibliothek in eine andere Tätigkeit und es funktioniert einwandfrei, also muss es etwas zu tun mit meinem main Activity
.
- Die Frage ist, wenn Sie anrufen
getHeight()
? Als Pull-to-refresh-Bibliothek ruft es, zu einer bestimmten Zeit. ich.e-Mail, wennView
erstellt. on a side note, Sie sind mit einerview pager
? - Ich bin mit einem
ViewPager
in einigenFragments
, aber das Problem besteht überall in der übergeordnetenActivity
. - Ich nenne
getHeight()
als eines der ersten Dinge, die in meinemActivity
onCreate()
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Damit stellen Sie sicher, es gibt nicht die Ansichten unter Ihrem Action-Bar, die Sie hinzufügen können, einen oberen Rand, um es in der XML.
Quelle: http://developer.android.com/guide/topics/ui/actionbar.html#Style
UPDATE: Der folgende Text wird Hinzugefügt. Ich beschloss, Tauchen Sie ein in die Android-source-code, um zu sehen, was der tatsächliche ActionBar Höhen werden sollen. Also, ich schaute in all die verschiedenen Arten von values/dimens.xml zu finden
action_bar_default_height
. Unten sind die Ergebnisse.In values/dimens.xml,
In values-land/dimens.xml,
In values-sw600dp/dimens.xml,
Ich habe auch überprüft die folgenden, aber Sie nicht überschreiben dieses Attribut:
Wenn ich mehr Zeit, ich kann Blick für die Wurzel des Problems, aber bis dahin Sie können diese drei Werte in Ihren unterschiedlichen Werte-Ordner (als temp-fix).
android:layout_marginTop="@dimen/action_bar_default_height"
Dies ist, was gibt falschen Höhe, wahrscheinlich
0
.ActionBar
ist nicht bereit details über sich selbst an diesem Punkt. Es ist in den Prozess der Einführung erstellt, zusammen mit dem rest von der Aktivität Anzeigen.Versuchen Sie Folgendes:
Diese sollten geben Sie den richtigen Wert für die ActionBar Höhe.
Als proof-of-concept, kommentieren Sie
mContentView.post(...);
und zeigen einfach Toast. Der Toast wird wahrscheinlich sagenActionBar's height is 0
.getHeight()
in meinem code an einer beliebigen Stelle, die PullToRefresh-Bibliothek gibt mir immer noch die Ergebnisse von den links.