Muszę znać dokładny rozmiar ActionBar w pikselach, aby zastosować prawidłowy obraz tła.
android
android-actionbar
Eugene
źródło
źródło
Odpowiedzi:
Aby pobrać wysokość ActionBar w XML, wystarczy użyć
lub jeśli jesteś użytkownikiem ActionBarSherlock lub AppCompat, użyj tego
Jeśli potrzebujesz tej wartości w czasie wykonywania, użyj jej
Jeśli chcesz zrozumieć, gdzie to jest zdefiniowane:
źródło
@dimen/abc_action_bar_default_height
bezpośrednio (ActionBarComapt) i zadziałało (na urządzeniu mdpi). Ale próba uzyskania tej wartości na Samsungu Galaxy SIII zwróciła mi złą wartość. Jest tak, ponieważvalues-xlarge
(jakoś) jest bardziej preferowany niżvalues-land
w trybie poziomym. Odwołanie się do atrybutu działa jak urok.android.R.attr.actionBarSize
rozwiąże się do rozmiaru 0 na urządzeniach starszych niż 3.0. Więc podczas korzystania zActionBarCompat
nich trzymaj sięandroid.support.v7.appcompat.R.attr.actionBarSize
zamiast tego.Z de skompilowane źródeł Android 3.2 roku
framework-res.apk
,res/values/styles.xml
zawiera:3.0 i 3.1 wydają się być takie same (przynajmniej z AOSP) ...
źródło
Aby uzyskać rzeczywistą wysokość paska akcji, musisz rozwiązać atrybut
actionBarSize
w czasie wykonywania.źródło
Jedna z próbek o strukturze plastra miodu dotyczy
?android:attr/actionBarSize
źródło
?attr/actionBarSize
(zauważ brak przestrzeni nazw Androida), który działa na wszystkich poziomach API.Musiałem poprawnie powtórzyć te wysokości w aplikacji kompatybilnej przed ICS i wkopać się w źródło rdzenia frameworka . Obie powyższe odpowiedzi są w pewnym sensie poprawne.
Zasadniczo sprowadza się to do użycia kwalifikatorów. Wysokość jest zdefiniowana przez wymiar „action_bar_default_height”
Domyślnie jest on ustawiony na 48dip. Ale dla -landa jest to 40dip, a dla sw600dp 56dip.
źródło
Jeśli korzystasz z paska ActionScript kompatybilności z najnowszego pakietu obsługi appcompat v7, możesz uzyskać wysokość za pomocą
Dokumentacja
źródło
Z nową biblioteką wsparcia v7 (21.0.0) nazwa w
R.dimen
zmieniła się na @ dimen / abc_action_bar_default_height_ materiał .Podczas aktualizacji z poprzedniej wersji biblioteki wsparcia powinieneś użyć tej wartości jako wysokości paska akcji
źródło
?attr/actionBarSize
jeśli ktoś chce dopasować regularneActionBar
.Jeśli używasz ActionBarSherlock, możesz uzyskać wysokość za pomocą
źródło
abs__
bezpośrednio prefiksowanych zasobów.Odpowiedź AZ13 jest dobra, ale zgodnie z wytycznymi projektowymi Androida pasek Actionbar powinien mieć co najmniej 48dp .
źródło
źródło
Klasa Podsumowanie jest zazwyczaj dobrym miejscem, aby rozpocząć. Myślę, że metoda getHeight () powinna wystarczyć.
EDYTOWAĆ:
Jeśli potrzebujesz szerokości, powinna to być szerokość ekranu (prawda?), Którą można zebrać w ten sposób .
źródło
Na moim Galaxy S4 o> 441dpi> 1080 x 1920> Pobieranie wysokości paska akcji za pomocą getResources (). GetDimensionPixelSize Mam 144 piksele.
Używając wzoru px = dp x (dpi / 160), używałem 441dpi, podczas gdy moje urządzenie należy
do kategorii 480dpi. więc wprowadzenie to potwierdza wynik.
źródło
Zrobiłem w ten sposób dla siebie, ta metoda pomocnicza powinna się przydać komuś:
źródło