Android ActionBar: mostrar / ocultar las pestañas de forma dinámica?
¿Es posible quitar / restaurar la barra de pestañas de la barra de acción dinámicamente?
Hasta ahora lo hice cambiando el modo de navegación de la barra de acción. He utilizado el siguiente código para eliminar y restaurar la barra de pestañas:
- Cómo desplazar tablayout programatically - Android
- ¿Es posible tener iconos en las pestañas de la barra de acción para Android?
- Crear tabhost personalizado como en el navegador de cromo para Android
- Cambiar el color de la línea en las pestañas - ActionBarSherlock
- Pestañas, Actividades y Fragmentos anidados
@Override public void restoreTabs() { getSupportActionBar() .setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); this.supportInvalidateOptionsMenu(); } @Override public void removeTabs() { getSupportActionBar() .setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); this.supportInvalidateOptionsMenu(); }
Eso funciona, pero hay un gran problema: Cada vez que llamo setNavigationMode
, onTabSelected
se llama en el TabListener
y la pestaña opend se recrea.
- ActionBar con pestañas de navegación cambia de altura con la orientación de la pantalla
- poner pestañas en la parte inferior de la pantalla
- Intentar invocar el método virtual 'void android.support.v4.view.ViewPager.setAdapter (android.support.v4.view.PagerAdapter)' en una referencia de objeto nulo
- ¿Cómo mostrar el contador de notificaciones no leído en Tabs dentro de TabLayout?
- Cómo obtener DrawerLayout para deslizarse sobre la barra ActionBar
- Tab + ViewPager no se actualiza en su lugar muestra advertencia extraña estado esperado 3 encontrado 2
- Align-Center SlidingTabLayout
- Cómo evitar onCreateView () al deslizar en las pestañas
Para quitar dinámicamente las pestañas de la barra de acciones, simplemente necesita:
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
Para agregarlos al vuelo, simplemente haga lo siguiente:
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Para el segundo caso, la suposición es que después de configurar el modo de navegación, también agregará pestañas, a la barra de acción, similar a esto:
for (int resourceId : tabs) { actionBar.addTab(actionBar.newTab().setText(resourceId) .setTabListener(this)); }
public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); // calling onPrepareOptionsMenu() to show action bar icons getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); // calling onPrepareOptionsMenu() to hide action bar icons getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); invalidateOptionsMenu(); }
Esto está funcionando como se pretende, ya que la ficha se está seleccionando porque no estaba apareciendo. Le sugiero que haga por su cuenta el control en TabListener.
- Detección de color de la imagen de fondo con Android Paint
- Excepción de puntero nulo en la ventana de sugerencias popup en Samsung Galaxy Android 7