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 establezcoshowAsAction="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