SherlockActionBar: Cómo ajustar CustomView contra actionBar

Pregunta:

¿Cómo puedo recuperar el título?


Aquí está la captura de pantalla (Título faltante):

Introduzca aquí la descripción de la imagen

Configuración de la barra de acción:

ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("My Title"); actionBar.setIcon(drawable.dropdown_user); View mLogoView = LayoutInflater.from(this).inflate(R.layout.mLogoView, null); actionBar.setCustomView(mLogoView); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayShowTitleEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); 

MLogoView.xml:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" > <ImageView android:id="@+id/img_merchant" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:src="@drawable/infoflex"> </ImageView> </RelativeLayout > 

La primera cosa que puedo pensar una manera de arreglar que es tratar de establecer

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="right" > 

A su RelativeLayout . Debido a que por defecto en Android cada vista se agrega de izquierda a derecha (si no especifica otra cosa en su código).

Y si eso no funciona, añadiría android:layout_width="90dip" o algún otro valor dependiendo de la imagen y sus pruebas. La segunda opción es más como una solución, pero creo que funcionará en todos los dispositivos.

Editar:

Como he encontrado hay un pequeño problema usando RelativeLayout y vistas personalizadas en ActionBar, por lo que la mejor opción es utilizar LinearLayout y establecer LayoutParams través de código. Cambie su xml para que se vea así:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/asus" /> </LinearLayout > 

Y en su MainActivity.class utilice esto:

 import com.actionbarsherlock.app.ActionBar.LayoutParams; .... ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("OMG"); LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_VERTICAL); View customNav = LayoutInflater.from(this).inflate(R.layout.img, null); // layout which contains your button. actionBar.setCustomView(customNav, lp); actionBar.setDisplayShowCustomEnabled(true); 
  • ¿El editor de diseño de Android Studio muestra propiedades de vista personalizada?
  • Configurar el color de un objeto Paint en la vista personalizada
  • Cómo Canvas.drawText () realmente dibuja el texto?
  • No se encontró ningún identificador de recurso para el atributo '' in package 'com.app ...'
  • Android: Añadir un botón personalizado a SearchView Widget en Actionbar
  • Cómo utilizar Path (android.graphics.Path) con lienzo en android?
  • Vista circular personalizada
  • Usabilidad de BoringLayout
  • Visor dinámico de altura
  • Android - Personalización del widget Spinner Look and Feel
  • Pantalla personalizada con líneas de puntos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.