Ich muss die genaue Größe der ActionBar in Pixel kennen, um das richtige Hintergrundbild anzuwenden.
Wie groß ist die ActionBar in Pixel?
Eugen
AZ13
Um die Höhe der ActionBar in XML abzurufen, verwenden Sie einfach
?android:attr/actionBarSize
oder wenn Sie ein ActionBarSherlock- oder AppCompat-Benutzer sind, verwenden Sie dies
?attr/actionBarSize
Wenn Sie diesen Wert zur Laufzeit benötigen, verwenden Sie this
final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
new int[] { android.R.attr.actionBarSize });
mActionBarSize = (int) styledAttributes.getDimension(0, 0);
styledAttributes.recycle();
Wenn Sie verstehen müssen, wo dies definiert ist:
- Der Attributname selbst wird in der Plattform definiert /res/values/attrs.xml
- Die der Plattform themes.xml wählt dieses Attribut aus und weist ihm einen Wert zu.
- Der in Schritt 2 zugewiesene Wert hängt von verschiedenen Gerätegrößen ab, die in definiert sind verschiedene dimens.xml-Dateien auf der Plattform, dh. core/res/res/values-sw600dp/dimens.xml
-
Gute Antwort. Ich kenne den Weg, um diese Informationen zu finden, aber diese Antwort zu suchen war viel schneller +1. Ihre Antwort ist auch ein guter Hinweis, wie man nach solchen Dingen sucht.
– rekire
1. Februar 13 um 14:35 Uhr
-
Danke schön. Ich habe versucht zu verwenden
@dimen/abc_action_bar_default_height
direkt (ActionBarComapt) und es funktionierte (auf mdpi-Gerät). Aber der Versuch, diesen Wert auf dem Samsung Galaxy SIII zu erhalten, hat mir einen falschen Wert zurückgegeben. Das ist, weilvalues-xlarge
(irgendwie) bevorzugter alsvalues-land
im Querformat. Der Verweis auf das Attribut wirkt stattdessen wie ein Zauber.– Alex Semenjuk
17. Januar 14 um 10:36 Uhr
-
@AZ13 Das möchte ich hinzufügen
android.R.attr.actionBarSize
wird auf Geräten vor Version 3.0 in Größe 0 aufgelöst. Also bei der NutzungActionBarCompat
man würde sich daran haltenandroid.support.v7.appcompat.R.attr.actionBarSize
stattdessen.– Zeichnete
8. Juli 14 um 9:55 Uhr
-
Der Typ hat es in Pixeln gefragt. Ich nehme an, actionBarSize gibt den dp-Wert zurück. Ich habe den Wert 48dp bekommen. Das heißt, wenn ich es in Pixel umwandele, erhalte ich 96 Pixel für xhdpi.
– Mohammed
3. September 14 um 18:14 Uhr
-
“android.R.attr.actionBarSize” funktioniert nicht in der Android-Version 2.3, aber “R.attr.actionBarSize” funktioniert in allen Android-Versionen. Verwenden Sie einfach “R.attr.actionBarSize” anstelle von “android.R.attr.actionBarSize” und so weiter.
– Nathaniel Jobs
20. Mai 16 um 3:23 Uhr
Jake Wharton
Aus den dekompilierten Quellen von Android 3.2 framework-res.apk
, res/values/styles.xml
enthält:
<style name="Theme.Holo">
<!-- ... -->
<item name="actionBarSize">56.0dip</item>
<!-- ... -->
</style>
3.0 und 3.1 scheinen gleich zu sein (zumindest von AOSP) …
-
Was ist mit der unterschiedlichen Höhe der Aktionsleiste im Querformat?
– Manfred Moser
27. Januar 12 um 19:41 Uhr
-
auf 4.0+: Standard ist 48 dp, Landschaft ist 40 dp, sw600dp ist 56 dp
– Jake Wharton
27. Januar 12 um 20:37 Uhr
-
Aus diesem Grund sollten Sie den android:attr-Wert und keinen fest codierten Wert verwenden!
– Vikram Bodicherla
4. Juli 13 um 3:07 Uhr
Um die tatsächliche Höhe der Actionbar zu erhalten, müssen Sie das Attribut auflösen actionBarSize
zur Laufzeit.
TypedValue tv = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId);
Eines der Honeycomb-Beispiele bezieht sich auf ?android:attr/actionBarSize
Manfred Moser
Ich musste diese Höhen in einer Pre-ICS-Kompatibilitäts-App richtig replizieren und mich in die vertiefen Framework-Kernquelle. Beide obigen Antworten sind irgendwie richtig.
Es läuft im Grunde darauf hinaus, Qualifizierer 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 sind es 40dip und für sw600dp 56dip.
RevanthKrishnaKumar V.
Wenn Sie die Kompatibilitäts-ActionBar aus dem aktuellen v7-Appcompat-Supportpaket verwenden, können Sie die Höhe mit abrufen
@dimen/abc_action_bar_default_height
stkent
Mit dem Neuen v7-Unterstützungsbibliothek (21.0.0) der Name in R.dimen
hat sich geändert zu @dimen/abc_action_bar_default_height_Material.
Beim Upgrade von einer früheren Version der Support-Bibliothek sollten Sie daher diesen Wert als Höhe der Aktionsleiste verwenden
-
Perfekt! Das schlägt sicher
?attr/actionBarSize
wenn man sucht, um mit einem Stammgast zusammenzupassenActionBar
.– karllindmark
1. November 14 um 18:46 Uhr
.