tres titulo studio puntos personalizar icono example cambiar bar agregar android android-actionbar

android - titulo - ActionBar con diseño personalizado con elemento de menú personalizado



menu tres puntos android (1)

ActionBar tiene soporte de vista personalizada. No use onCreateOptionsMenu() y R.menu.actionbar_right_icon . En su lugar, cree un diseño que tome todas las vistas que ha dibujado.

Puedes hacerlo como a continuación

LayoutParams layout_params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); getSupportActionBar().setCustomView(custom_view, layout_params);

Quiero hacer una barra de acción personalizada al poner ImageView en el medio y tener otro ícono con cierta información en el lado derecho de la barra de acciones como esta:

Puedo hacer una imagen vista en el medio, pero el problema es

  • cuando infla el diseño en onCreateOptionMenu() y establezco showAsAction="always" la vista de la derecha toma todo el espacio de la barra de acciones como esta

pero si lo configuro como "never" se mostrará la imagen del medio pero el elemento del menú se habrá ido

aquí está mi código:

private void setActionBar(){ actionBar = getActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayShowHomeEnabled(true); actionBar.setDisplayUseLogoEnabled(true); actionBar.setDisplayShowCustomEnabled(true); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); LayoutInflater linflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); View view = linflater.inflate(R.layout.actionbar_layout, null); ActionBar.LayoutParams lp = new ActionBar.LayoutParams( ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT); lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL; view.setLayoutParams(lp); actionBar.setCustomView(view); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.actionbar_right_icon, menu); MenuItem menuItem = menu.findItem(R.id.user_info); View rightIcon = menuItem.getActionView(); RelativeLayout rightIconLayout = (RelativeLayout) rightIcon.findViewById(R.id.actionbar_right_icon); TextView user = (TextView) rightIconLayout.findViewById(R.id.actionbar_user); TextView id = (TextView) rightIconLayout.findViewById(R.id.actionbar_id); user.setText("User:test"); id.setText("ID:xxxxx"); return true; }

menu / actionbar_right_icon

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/user_info" android:actionLayout="@layout/actionbar_right_icon_layout" android:icon="@drawable/user_icon" android:showAsAction="always" /> </menu>

¿Cómo puedo arreglar esto?

gracias de antemano