¿Cómo puedo implementar una barra de acciones personalizada con botones personalizados en Android?

Quiero implementar ActionBar personalizada, que debe verse así:

enter image description here

Entonces preguntas:

  1. ¿Cómo puedo implementar un botón como vista personalizada: solo una imagen?
  2. ¿Cómo puedo trazar una línea en la parte superior de la ActionBar de ActionBar ?
  3. ¿Y cómo puedo implementar botones sin líneas de separación: agregar tabs en la ActionBar o qué?

enter image description here

Esto es más o menos lo que obtendrás si quieres usar las API de ActionBar . No estoy seguro de que puedas colocar una tira de colores por encima de la ActionBar sin hacer algún hacking de Window extraño, no vale la pena el problema. En lo que respecta al cambio de MenuItems , puede ajustarlos mediante un estilo. Sería algo como esto, pero no lo he probado.

   

A continuación, le mostramos cómo inflar y agregar el diseño personalizado a su ActionBar .

  // Inflate your custom layout final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate( R.layout.action_bar, null); // Set up your ActionBar final ActionBar actionBar = getActionBar(); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setCustomView(actionBarLayout); // You customization final int actionBarColor = getResources().getColor(R.color.action_bar); actionBar.setBackgroundDrawable(new ColorDrawable(actionBarColor)); final Button actionBarTitle = (Button) findViewById(R.id.action_bar_title); actionBarTitle.setText("Index(2)"); final Button actionBarSent = (Button) findViewById(R.id.action_bar_sent); actionBarSent.setText("Sent"); final Button actionBarStaff = (Button) findViewById(R.id.action_bar_staff); actionBarStaff.setText("Staff"); final Button actionBarLocations = (Button) findViewById(R.id.action_bar_locations); actionBarLocations.setText("HIPPA Locations"); 

Aquí está el diseño personalizado:

       

Aquí está el diseño de la franja de color: para usarlo, solo use merge en cualquier diseño que infle en setContentView .

  

Aquí están los estilos de Button :

    

Estos son los colores y las dimensiones que utilicé:

 #ff0d0d0d #ffffffff #99ffffff  14.0sp 16.0sp  5dp 

Si desea personalizarlo más que esto, puede considerar no usar el ActionBar , pero no lo recomendaría. También puede considerar leer las Pautas de diseño de Android para tener una mejor idea sobre cómo diseñar su ActionBar.

Si opta por renunciar a la ActionBar y utiliza su propio diseño, asegúrese de agregar ActionBar acción cuando los usuarios presionen durante mucho tiempo sus “Elementos de menú”. Esto se puede lograr fácilmente usando este Gist .

1 Puedes usar un dibujable

    

2 Cree un estilo para la barra de acciones y use un fondo personalizado:

       

3 Style again android: actionBarDivider

La documentación de Android es muy útil para eso.

Por favor, escriba el siguiente código en el archivo menu.xml:

        

También escriba este código java en el archivo de clase de actividad:

 public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); Toast.makeText(this, "Menus item selected: " + item.getTitle(), Toast.LENGTH_SHORT).show(); switch (item.getItemId()) { case R.id.sub_one: isItemOneSelected = true; supportInvalidateOptionsMenu(); return true; case MENU_ITEM + 1: isRemoveItem = true; supportInvalidateOptionsMenu(); return true; default: return false; } } 

Esta es la forma más fácil de mostrar los menús en la barra de acciones.