studio navegacion inferior barra android android-actionbar android-navigation android-5.0-lollipop

navegacion - Los modos de navegación de la barra de acción están en desuso en Android L



barra de navegacion android studio (10)

Al observar el informe de diferencias de API para la vista previa de Android "L", veo que todos los métodos relacionados con los modos de navegación en la clase ActionBar (como setNavigationMode() , addTab() , selectTab() , & c). ahora están en desuso.

La documentación explica:

Los modos de navegación de la barra de acción están en desuso y no son compatibles con las barras de acción de la barra de herramientas en línea. Considere utilizar otros patrones de navegación comunes en su lugar.

¿Cuál es el supuesto reemplazo?

Además, ¿es la "barra de acción de la barra de herramientas en línea" un nuevo concepto? No creo que haya oído hablar de eso antes.


Ahora que los documentos de Android 5.0 están disponibles, tenemos la documentación oficial para el widget de la barra de herramientas :

Una barra de herramientas estándar para usar dentro del contenido de la aplicación.

Una barra de herramientas es una generalización de las barras de acción para usar dentro de los diseños de aplicaciones. Mientras que una barra de acción es tradicionalmente parte de la decoración de la ventana opaca de una Actividad controlada por el marco, una Barra de herramientas se puede colocar en cualquier nivel arbitrario de anidación dentro de una jerarquía de vistas .

También se puede usar un widget de la Toolbar para reemplazar la barra de acción:

Una aplicación puede elegir designar una barra de herramientas como la barra de acción para una actividad usando el método setActionBar() .

La eliminación de las pestañas en la barra de acción se debe probablemente a esto, ya que las barras de herramientas no pueden contener pestañas.

Además, está disponible para las versiones anteriores de Android a través de la biblioteca appcompat. Ver este post por Chris Banes para más información. Un experto:

Android 5.0 introduce un nuevo widget de barra de herramientas. Esta es una generalización del patrón ActionBar, pero le da mucho más control y flexibilidad para usarlo. La barra de herramientas es una vista en su jerarquía como cualquier otra, lo que facilita el intercalado con el resto de sus vistas, anima, reacciona a los eventos de desplazamiento.


Bueno para mí, para manejar la barra de herramientas de navegación en desuso usando la barra de herramientas v7 widget appcompat.

setSupportActionBar(toolbar); getSupportActionBar().setSubtitle("Feed Detail"); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //goToWhere } });


Creo que un reemplazo adecuado para cuando tenga de tres a cinco pantallas de igual importancia es la actividad de navegación en el fondo, que se puede usar para cambiar fragmentos.

Notará que existe un asistente para esto en Android Studio, pero tenga cuidado, ya que Android Studio tiende a producir un código de placa de caldera demasiado complejo.

Puede encontrar un tutorial aquí: https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f

Otro tutorial de calidad se puede encontrar en Android Hive aquí: https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/


Encontré estos tutoriales útiles cuando armé una barra de acción (ahora la ''barra de herramientas'' - argh) que admite pestañas deslizantes con Material Design:

https://www.youtube.com/watch?v=Fl0xMuo10yA

http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html

Tienes que sintetizar estos recursos para que coincidan con tu situación particular. Por ejemplo, es posible que no desee crear manualmente las pestañas en el mismo estilo que el tutorial de exoguru.com.


FragmentTabHost también es una opción.

Este código es del sitio del desarrollador de Android:

/** * This demonstrates how you can implement switching between the tabs of a * TabHost through fragments, using FragmentTabHost. */ public class FragmentTabs extends FragmentActivity { private FragmentTabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_tabs); mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"), FragmentStackSupport.CountingFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"), LoaderCursorSupport.CursorLoaderListFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"), LoaderCustomSupport.AppListFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"), LoaderThrottleSupport.ThrottledLoaderListFragment.class, null); } }


La nueva biblioteca de soporte de diseño de Android agrega TabLayout , que proporciona una implementación de pestaña que coincide con las pautas de diseño del material para las pestañas . En este video se puede encontrar un tutorial completo sobre cómo implementar pestañas y ViewPager

Ahora en desuso: PagerTabStrip es parte de la biblioteca de soporte (y lo ha sido durante algún tiempo) y sirve como reemplazo directo. Si prefiere las nuevas pestañas de estilo Google Play, puede usar la biblioteca PagerSlidingTabStrip o modificar cualquiera de los ejemplos proporcionados por Google SlidingTabsBasic o SlidingTabsColors como se explica en este video Dev Bytes .


La nueva Toolbar no se puede usar para inflar múltiples objetos de línea, por lo que es imposible agregarle pestañas.
Si desea utilizar una Toolbar como un TabWidget , puede insertar algunos objetos de pestaña en ella, pero solo con el antiguo estilo Holo.

Here hay una biblioteca personalizada que usa la Toolbar v7 como TabWidget con las nuevas animaciones de Material Design, pero usa los mismos métodos de las antiguas ActionBar Tabs , por lo que puede adjuntar su ViewPager .


Para el "reemplazo" de ActionBar obsoleto, cambié el tipo de mis variables de tipo ActionBar a PagerTabStrip, según (código antiguo en el comentario):

// ActionBar bigActionBar; PagerTabStrip bigActionBar;

Un ''reemplazo'' de ~ actionBar''s .selectTab (tabindex) fue usar el método .setCurrentItem (int) de mi ViewPager asociado, como este (código antiguo en el comentario):

/* ActionBar.Tab eventTab = bigActionBar.getTabAt(2); bigActionBar.selectTab(eventTab); */ mViewPager.setCurrentItem(2);

Espero que esto sea de ayuda.


Parece que agregaron una nueva clase llamada android.widget.Toolbar que extiende ViewGroup . También agregaron un nuevo método setActionBar(Toolbar) en Activity . No lo he probado todavía, pero parece que puedes TabWidgets todo tipo de TabWidgets , Spinners o vistas personalizadas en una Toolbar y usarla como tu barra de acción.


Tuve el mismo problema y esta solución me fue muy bien:

En el archivo xml de diseño que contiene el viewpager, agregue un PagerTabStrip como se muestra:

<android.support.v4.view.PagerTabStrip android:id="@+id/pager_tab_strip" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:background="#996633" android:textColor="#CCCCCC" android:paddingTop="5dp" android:paddingBottom="5dp" />

Para controlar los títulos de las páginas, agregue una declaración de cambio a su archivo ViewPager:

@Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return "Page 1"; case 1: return "Page 2"; case 2: return "Page 3"; } return null; }