Saya perlu tahu ukuran persis ActionBar dalam piksel sehingga untuk menerapkan gambar latar belakang yang benar.
android
android-actionbar
Eugene
sumber
sumber
Jawaban:
Untuk mengambil ketinggian ActionBar di XML, cukup gunakan
atau jika Anda pengguna ActionBarSherlock atau AppCompat, gunakan ini
Jika Anda membutuhkan nilai ini saat runtime, gunakan ini
Jika Anda perlu memahami di mana ini didefinisikan:
sumber
@dimen/abc_action_bar_default_height
secara langsung (ActionBarComapt) dan berhasil (pada perangkat mdpi). Tetapi mencoba untuk mendapatkan nilai ini pada Samsung Galaxy SIII mengembalikan nilai yang salah kepada saya. Itu karenavalues-xlarge
(entah bagaimana) lebih disukai daripadavalues-land
ketika dalam mode lansekap. Mengacu pada atribut sebagai gantinya bekerja seperti pesona.android.R.attr.actionBarSize
akan menyelesaikan ke ukuran 0 pada perangkat pra-3.0. Jadi, ketika menggunakanActionBarCompat
salah satu akan tetapandroid.support.v7.appcompat.R.attr.actionBarSize
menggunakannya.Dari sumber Android 3.2 yang tidak dikompilasi
framework-res.apk
,res/values/styles.xml
berisi:3.0 dan 3.1 tampaknya sama (setidaknya dari AOSP) ...
sumber
Untuk mendapatkan ketinggian sebenarnya dari Actionbar, Anda harus menyelesaikan atribut
actionBarSize
saat runtime.sumber
Salah satu contoh Honeycomb merujuk
?android:attr/actionBarSize
sumber
?attr/actionBarSize
(perhatikan kurangnya namespace android) yang bekerja pada semua level API.Saya perlu melakukan replikasi ketinggian ini dengan benar dalam aplikasi kompatibilitas pra-ICS dan menggali sumber inti kerangka kerja . Kedua jawaban di atas agak benar.
Pada dasarnya bermuara pada menggunakan kualifikasi. Ketinggiannya ditentukan oleh dimensi "action_bar_default_height"
Ini didefinisikan untuk 48dip untuk default. Tapi untuk -land adalah 40dip dan untuk sw600dp 56dip.
sumber
Jika Anda menggunakan ActionBar kompatibilitas dari paket dukungan appcompat v7 baru-baru ini, Anda bisa mendapatkan ketinggian menggunakan
Dokumentasi
sumber
Dengan pustaka dukungan v7 baru (21.0.0) nama di
R.dimen
telah berubah menjadi @ dimen / abc_action_bar_default_height_ material .Saat memutakhirkan dari versi lib dukungan sebelumnya, Anda harus menggunakan nilai itu sebagai tinggi bilah tindakan
sumber
?attr/actionBarSize
jika seseorang mencari yang cocok dengan yang biasaActionBar
.Jika Anda menggunakan ActionBarSherlock, Anda bisa mendapatkan ketinggiannya
sumber
abs__
sumber daya -prefixed secara langsung.Jawaban @ AZ13 baik, tetapi sesuai dengan pedoman desain Android , ActionBar harus setidaknya 48dp .
sumber
sumber
The Kelas Ringkasan biasanya tempat yang baik untuk memulai. Saya pikir metode getHeight () harus cukup.
EDIT:
Jika Anda membutuhkan lebar, itu harus menjadi lebar layar (kan?) Dan itu bisa dikumpulkan seperti ini .
sumber
Pada Galaxy S4 saya yang memiliki> 441dpi> 1080 x 1920> Mendapatkan tinggi Actionbar dengan getResources (). GetDimensionPixelSize Saya mendapat 144 piksel.
Menggunakan rumus px = dp x (dpi / 160), saya menggunakan 441dpi, sedangkan perangkat saya berada
di kategori 480dpi. jadi menempatkan itu menegaskan hasilnya.
sumber
Saya melakukannya dengan cara ini untuk diri saya sendiri, metode pembantu ini harus berguna bagi seseorang:
sumber