Ich muss die genaue Größe von ActionBar in Pixel kennen, um das richtige Hintergrundbild anwenden zu können.
android
android-actionbar
Eugene
quelle
quelle
Antworten:
Verwenden Sie einfach, um die Höhe der ActionBar in XML abzurufen
oder wenn Sie ein ActionBarSherlock- oder AppCompat-Benutzer sind, verwenden Sie dies
Wenn Sie diesen Wert zur Laufzeit benötigen, verwenden Sie diesen
Wenn Sie verstehen müssen, wo dies definiert ist:
quelle
@dimen/abc_action_bar_default_height
direkt zu verwenden (ActionBarComapt) und es hat funktioniert (auf mdpi-Gerät). Der Versuch, diesen Wert auf dem Samsung Galaxy SIII zu erhalten, ergab jedoch einen falschen Wert. Das liegt daran, dassvalues-xlarge
(irgendwie) mehr bevorzugt wird alsvalues-land
im Querformat. Das Verweisen auf das Attribut funktioniert stattdessen wie ein Zauber.android.R.attr.actionBarSize
auf Geräten vor 3.0 die Größe 0 aufgelöst wird. Also bei der VerwendungActionBarCompat
würde manandroid.support.v7.appcompat.R.attr.actionBarSize
stattdessen bleiben .Aus den de-kompilierte Quellen von Android 3.2 ist
framework-res.apk
,res/values/styles.xml
enthält:3.0 und 3.1 scheinen gleich zu sein (zumindest von AOSP) ...
quelle
Um die tatsächliche Höhe der Aktionsleiste zu ermitteln, müssen Sie das Attribut
actionBarSize
zur Laufzeit auflösen .quelle
Eine der Wabenproben bezieht sich auf
?android:attr/actionBarSize
quelle
?attr/actionBarSize
(beachten Sie das Fehlen des Android-Namespace), die auf allen API-Ebenen funktioniert.Ich musste diese Höhen in einer Pre-ICS-Kompatibilitäts-App ordnungsgemäß replizieren und in die Framework -Kernquelle graben . Beide Antworten oben sind irgendwie richtig.
Im Grunde läuft es darauf hinaus, Qualifikanten zu verwenden. Die Höhe wird durch die Dimension "action_bar_default_height" definiert.
Es ist standardmäßig auf 48dip definiert. Aber für -land ist es 40dip und für sw600dp ist es 56dip.
quelle
Wenn Sie die Kompatibilitäts-ActionBar aus dem aktuellen Support-Paket für v7-Appcompat verwenden, können Sie die Höhe mithilfe von ermitteln
Dokumentation
quelle
Mit der neuen Version 7 Support - Bibliothek (21.0.0) den Namen in
R.dimen
hat sich geändert @ Dimen / abc_action_bar_default_height_ Material .Wenn Sie ein Upgrade von einer früheren Version der Support-Bibliothek durchführen, sollten Sie diesen Wert daher als Höhe der Aktionsleiste verwenden
quelle
?attr/actionBarSize
wenn man nach einem Stammspieler suchtActionBar
.Wenn Sie ActionBarSherlock verwenden, können Sie die Höhe mit ermitteln
quelle
abs__
vorfixierten Ressourcen direkt.Die Antwort von @ AZ13 ist gut, aber gemäß den Android-Designrichtlinien sollte die ActionBar mindestens 48 dp hoch sein .
quelle
quelle
Die Klassenzusammenfassung ist normalerweise ein guter Anfang. Ich denke, die getHeight () -Methode sollte ausreichen.
BEARBEITEN:
Wenn Sie die Breite benötigen, sollte es die Breite des Bildschirms (oder?) Sein und das kann gesammelt werden wie folgt .
quelle
Auf meinem Galaxy S4 mit> 441 dpi> 1080 x 1920> Abrufen der Actionbar-Höhe mit getResources (). GetDimensionPixelSize Ich habe 144 Pixel.
Mit der Formel px = dp x (dpi / 160) habe ich 441 dpi verwendet, während mein Gerät
in der Kategorie 480 dpi liegt . Das bestätigt das Ergebnis.
quelle
Ich habe es auf diese Weise für mich getan, diese Hilfsmethode sollte für jemanden nützlich sein:
quelle