Preciso saber o tamanho exato da ActionBar em pixels para aplicar a imagem de fundo correta.
android
android-actionbar
Eugene
fonte
fonte
Respostas:
Para recuperar a altura do ActionBar em XML, basta usar
ou se você é um usuário do ActionBarSherlock ou AppCompat, use este
Se você precisar desse valor em tempo de execução, use este
Se você precisar entender onde isso está definido:
fonte
@dimen/abc_action_bar_default_height
diretamente (ActionBarComapt) e funcionou (no dispositivo mdpi). Mas tentar obter esse valor no Samsung Galaxy SIII me retornou um valor errado. Isso ocorre porquevalues-xlarge
(de alguma forma) é mais preferido do quevalues-land
quando está no modo paisagem. A referência ao atributo funciona como um encanto.android.R.attr.actionBarSize
resolverá o tamanho 0 em dispositivos anteriores à 3.0. Portanto, ao usarActionBarCompat
um, você prefere ficarandroid.support.v7.appcompat.R.attr.actionBarSize
.Das fontes descompiladas do Android 3.2
framework-res.apk
,res/values/styles.xml
contém:3.0 e 3.1 parecem ser os mesmos (pelo menos da AOSP) ...
fonte
Para obter a altura real da barra de ação, é necessário resolver o atributo
actionBarSize
no tempo de execução.fonte
Uma das amostras do favo de mel refere-se a
?android:attr/actionBarSize
fonte
?attr/actionBarSize
(observe a falta de espaço para nome do Android) que funciona em todos os níveis da API.Eu precisava replicar essas alturas corretamente em um aplicativo de compatibilidade pré-ICS e cavar a fonte principal da estrutura . Ambas as respostas acima estão corretas.
Basicamente, tudo se resume ao uso de qualificadores. A altura é definida pela dimensão "action_bar_default_height"
É definido como 48dip por padrão. Mas para -land é 40dip e para sw600dp é 56dip.
fonte
Se você estiver usando o ActionBar de compatibilidade do pacote de suporte para app7 v7 recente, poderá obter a altura usando
Documentação
fonte
Com a nova biblioteca de suporte da v7 (21.0.0), o nome
R.dimen
mudou para @ dimen / abc_action_bar_default_height_ material .Ao atualizar de uma versão anterior da lib de suporte, você deve, portanto, usar esse valor como a altura da barra de ação
fonte
?attr/actionBarSize
é melhor do que se você quer combinar com um regularActionBar
.Se você estiver usando o ActionBarSherlock, poderá obter a altura com
fonte
abs__
recursos prefixados diretamente.A resposta do @ AZ13 é boa, mas de acordo com as diretrizes de design do Android , o ActionBar deve ter pelo menos 48dp de altura .
fonte
fonte
O Resumo da turma é geralmente um bom ponto de partida. Eu acho que o método getHeight () deve ser suficiente.
EDITAR:
Se você precisar da largura, ela deve ser a largura da tela (certo?) E pode ser agrupada assim .
fonte
No meu Galaxy S4 com> 441dpi> 1080 x 1920> Obtendo altura da Actionbar com getResources (). GetDimensionPixelSize Eu tenho 144 pixels.
Usando a fórmula px = dp x (dpi / 160), eu estava usando 441dpi, enquanto meu dispositivo está
na categoria 480dpi. colocando isso confirma o resultado.
fonte
Eu fiz dessa maneira por mim mesmo, esse método auxiliar deve ser útil para alguém:
fonte