Android (ActionBarSherlock) ¿Hay alguna manera de mantener la misma altura de ActionBar tanto en el retrato y el paisaje?

He estado trabajando con ActionBar y ActionBarSherlock durante los últimos días, y estoy teniendo algunos problemas al rellenar alguna información en ActionBar.

Cuando la aplicación se ejecuta en modo vertical, la ActionBar se ve bien y se pueden mostrar todos los datos, por ejemplo:

ActionBar en modo retrato

Pero cuando cambio la aplicación para que se muestre en el paisaje, algunos de los datos se recortan:

ActionBar en modo horizontal

Puede observar cómo se ha recortado tanto el icono de estado como el correo electrónico debido a la nueva altura de ActionBar.

En este caso, quiero mantener el mismo tamaño para el retrato y el paisaje para que la aplicación puede verse bien. No puedo reducir el tamaño de fuente del título de la barra de acción, ya que puede incluir otros iconos.

La forma en que estoy poniendo estos iconos en el título de la barra de acción y el subtítulo es mediante el uso de Html.fromHtml

¿Alguna idea para resolver este problema? ¡Estoy usando la biblioteca ActionBarSherlock!

Uno, probablemente no demasiado bonito enfoque, podría ser para anular los valores de altura por defecto para la ActionBar en dimens.xml .

Por ejemplo, el valor predeterminado en retrato es:

 <dimen name="abs__action_bar_default_height">48dip</dimen> 

Y en el paisaje:

 <dimen name="abs__action_bar_default_height">40dip</dimen> 

Puede haber una manera más limpia de hacerlo, pero tengo que admitir que sé muy poco sobre los internos de ActionBarSherlock para eso.


Edit: Vamos a pensar en ello, esto probablemente no funcionará cuando el nativo ActionBar se está utilizando en ICS, ya que la altura, a continuación, resolver el valor de la plataforma en ?android:attr/actionBarSize . Te recomiendo que esperes una mejor sugerencia, por ejemplo de Jake él mismo.

Segunda edición: Después de la respuesta de Jake parece que todo lo que necesitas hacer para que funcione con ActionBarSherlock en los dispositivos ICS y pre-ICS es añadir lo siguiente al tema de tu aplicación:

 <item name="actionBarSize">@dimen/some_value</item> <item name="android:actionBarSize">@dimen/some_value</item> 

A continuación, puede agregar los valores reales en los depósitos de recursos de retrato / tierra relevantes.

Tercera edición [gracias alvarolb ]: XML Ejemplo para el estilo:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar"> <item name="actionBarSize">48dip</item> <item name="android:actionBarSize">48dip</item> </style> </resources> 

Y en la actividad correspondiente, establezca este nuevo estilo

 android:theme="@style/Theme.Styled" 

¡y funciona!

  • Android Video no se ajusta a la anchura en el retrato de la videovista y no ocupa la pantalla completa en el paisaje
  • ¿Cómo configurar la aplicación para que sea sólo de retrato?
  • Orientación de vídeo de retrato de Android incorrecta en VideoView
  • Cómo configurar framelayout para el paisaje, incluso si mi actividad está en modo retrato en android 2.3.1
  • Cómo cargar el archivo xml diferente en el cambio de orientación en android
  • ¿Cómo bloqueo la orientación de la pantalla para el teléfono, pero no para la tableta? (Androide)
  • Android sensorPortrait no funciona para el modo de retrato inverso
  • Bloquear la aplicación del teléfono Android en el modo Retrato
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.