Barra de acciones de Android: pestañas personalizadas y desbordamiento

Tengo dificultades para implementar pestañas con estilo personalizado para la barra de acción: necesito hacer pestañas (me refiero a los botones) usar gráficos personalizados para estados normales y seleccionados.

He podido matar todo el estilo nativo usando

<style name="customActionBarTabStyle"> <item name="android:background">#00000000</item> </style> 

Y luego usar Tab.setIcon () para que las pestañas se vean de la manera que necesito, pero necesito que reaccionen al cambio (conmutando entre dos Drawables – para encender y apagar el estado).

He intentado crear un selector Drawable como este:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/btn_on" /> <item android:drawable="@drawable/btn_off" /> </selector> 

Pero las pestañas no cambian al modo presionado cuando se selecciona.

También, he intentado llamar a Tab.setIcon () en TabListener.onTabSelected () y .onTabUnselected () – tampoco suerte.

¿Alguien sabe una buena solución a esta?

También, tengo que mostrar una vista personalizada en lugar de menú de desbordamiento – Ya he googled un montón de "sugerencias" para repensar mi interfaz de usuario para "seguir la forma de Android", pero el problema es la interfaz de usuario no es real mía para repensar – Es cliente 🙂 por lo que realmente me gustaría encontrar una manera de solución de las deficiencias de personalización de ActionBar.

Cualquier sugerencia es muy apreciada, gracias de antemano.

4 Solutions collect form web for “Barra de acciones de Android: pestañas personalizadas y desbordamiento”

Trate de usar state_selected en lugar de state_pressed, simplemente tratando de hacer algo similar aquí (cambiando las imágenes de fondo de las pestañas por completo) y parece que las pestañas de la barra de acción sólo entran seleccionados true / false pero no el estado presionado …

EDIT: Parece que la propiedad de fondo entra en ese estado, pero no el color de texto utilizado en las pestañas …

Creo que usted tendrá que usar android: selectableItemBackground echar un vistazo a esto puede ayudar.

Buena suerte

Sólo para hacer la solución más presente:

@ Taf dijo que la solución: es necesario establecer el android:duplicateParentState="true" en el diseño de los padres que utiliza como una vista personalizada para su ficha.

Aquí está mi código y el icono cambiar cuando se selecciona una pestaña, y cambiar de nuevo cuando no se selecciona.

  public class MainActivity extends FragmentActivity implements ActionBar.TabListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_ACTION_BAR); setContentView(R.layout.activity_main); // Set up the action bar. final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setBackgroundDrawable(null); icons = new int[] { R.drawable.ic_facebook, R.drawable.ic_facebook, R.drawable.ic_facebook, R.drawable.ic_facebook, }; icons_selected = new int[] { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, }; // For each of the sections in the app, add a tab to the action bar. for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { // Create a tab with text corresponding to the page title defined by // the adapter. Also specify this Activity object, which implements // the TabListener interface, as the callback (listener) for when // this tab is selected. actionBar.addTab( actionBar.newTab() .setText(mSectionsPagerAdapter.getPageTitle(i)) .setIcon(icons[i]) .setTabListener(this) ); } } 

y esto

  @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction){ getActionBar().getSelectedTab().setIcon(icons_selected[tab.getPosition()]); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { getActionBar().getSelectedTab().setIcon(icons[tab.getPosition()]); } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } 
  • Cómo cambiar el color del texto del indicador de tabs en android?
  • Cambiar el estilo de fuente en las pestañas de la barra de acción con Sherlock
  • Obtener una URL de pestaña desde la acción de la página (WebExtensions, Android)
  • Pestañas android - iniciar una nueva actividad
  • Fragmento se inicializa dos veces al recargar la actividad con pestañas cuando cambia la orientación
  • Desplazamiento de títulos como en Google Play
  • Cómo hacer scrollable tab en Android?
  • Android: el uso de la memoria aumenta cada vez que se hace clic en la pestaña (cuando se utiliza el grupo de actividades)
  • Android: "Tipo de navegación: Fijaciones fijas + Golpe"
  • TabLayout seleccionado El icono Tab no está seleccionado al iniciar:
  • No se puede mostrar 2 instancias de mi SurfaceView personalizado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.