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) { } 
  • Android: cambia las pestañas de una actividad dentro de una pestaña
  • Java.lang.OutOfMemoryError en Android 4.0 (API 14)
  • ¿Cómo se puede eliminar el relleno o margen en Tabwidget en android?
  • Cambiar el estilo de fuente en las pestañas de la barra de acción con Sherlock
  • Android multiple videoView problem, Galaxy Tab específico
  • Cómo hacer scrollable tab en Android?
  • TabLayout Tab Título del texto en minúscula
  • ActionBar Sherlock Tabs en la parte inferior
  • Cambiar fragmentos dentro de la pestaña
  • Android Barra superior de la barra de ActionBarSherlock
  • Android manifest.xml
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.