Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cajón deslizante aparecen en todas las actividades

Estoy desarrollando una aplicación que contiene muchas actividades y he creado mi propio menú (no quiero usar el botón de menú incorporado) con el cajón corredizo como el cajón deslizante está en la parte inferior de la pantalla y contiene mis botones de menú

Lo que necesito es hacer que ese cajón corredizo aparezca en todas mis actividades

He intentado crear una actividad y establecer su contenido de vista para el archivo xml que incluye el cajón y luego se extiende esa actividad en todas las demás actividades, pero esta solución no funciona

Por lo que cualquier sugerencia?

  • Android: Detectar mediante programación si el dispositivo tiene botón de menú de hardware
  • ¿Deshabilitar el botón de menú?
  • Menú de la cinta de opciones Android
  • ¿Cuándo y con qué frecuencia se llama al método onPrepareOptionsMenu () para ActionBar?
  • ActionBar con el icono y el texto en modo retrato
  • ¿Cómo excluir tu propia aplicación del menú Compartir?
  • Método de llamada cuando el botón de inicio presionado en android
  • ¿Hay accesos directos estándar en Android?
  • 3 Solutions collect form web for “Cajón deslizante aparecen en todas las actividades”

    Extender es el camino correcto. Simplemente anula setContentView de la manera correcta. Aquí está el ejemplo de trabajo, pero en lugar de cajón, utilizo una barra de diálogo personalizada creada:

    Defina un diseño con su cajón como este:

    Esto es act_layout.xml

     <LinearLayout ... android:orientation="vertical" > <YourDrawer ... /> <FrameLayout android:id="@+id/act_content" ... > // Here will be all activity content placed </FrameLayout> </LinearLayout> 

    Este será el diseño base para contener todos los demás diseños en el marco act_content. A continuación, cree una clase de actividad base y haga lo siguiente:

     public abstract class DrawerActivity extends Activity { protected LinearLayout fullLayout; protected FrameLayout actContent; @Override public void setContentView(final int layoutResID) { // Your base layout here fullLayout= (LinearLayout) getLayoutInflater().inflate(R.layout.act_layout, null); actContent= (FrameLayout) fullLayout.findViewById(R.id.act_content); // Setting the content of layout your provided to the act_content frame getLayoutInflater().inflate(layoutResID, actContent, true); super.setContentView(fullLayout); // here you can get your drawer buttons and define how they // should behave and what must they do, so you won't be // needing to repeat it in every activity class } } 

    Lo que hacemos, es básicamente interceptar todas las llamadas a setContentView (int resId), inflar nuestro diseño de cajón de xml, inflar nuestro diseño de la actividad (por reId proporcionado en la llamada al método), combinarlos como necesitamos, y establecer como el contentView de la actividad.

    EDIT: Después de crear las cosas de arriba, simplemente proceda a escribir una aplicación como de costumbre, crear layouts (sin mencionar un cajón) crear actividades, pero en lugar de extender la actividad simple, extienda DrawerActivity, así:

     public abstract class SomeActivity extends DrawerActivity { protected void onCreate(Bundle bundle) { setContentView(R.layout.some_layout); } } 

    Qué sucede, es que el setContentView (R.layout.some_layout) es interceptado. Tu DrawerActivity carga el diseño que proporcionaste desde xml, carga un diseño estándar para tu cajón, los combina y luego lo define como contentView para la actividad.

    Finalmente, después de 3 años, he aquí la solución completa a esta pregunta importante para quien no se haya guiado completamente por la respuesta del Sr. Orlov.

    Su método para hacer una visión de la jerarquía estaba completamente bien, pero había algunos pequeños errores que pueden engañar a los desarrolladores principiantes.

    1. Como Gabe también mencionó, puede deshacerse del resumen en la declaración.
    2. No hay necesidad de envolver a ambos niños con FrameLayout. El padre puede ser cualquier cosa RelativeLayout, LinearLayout, etc. Pero la parte más importante es que debes declarar el FrameLayout antes del Slider.

    Así que la solución de trabajo del 100% sería así:

    Activity_drawer.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:id="@+id/drawer_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <YourDrawer android:id="@+id/drawer_drawer" android:layout_width="match_parent" android:layout_height="fill_parent" > </YourDrawer> </RelativeLayout> 

    DrawerActivity.java

     public class DrawerActivity extends Activity { protected RelativeLayout fullLayout; protected FrameLayout frameLayout; @Override public void setContentView(int layoutResID) { fullLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.activity_drawer, null); frameLayout = (FrameLayout) fullLayout.findViewById(R.id.drawer_frame); getLayoutInflater().inflate(layoutResID, frameLayout, true); super.setContentView(fullLayout); //Your drawer content... } } 

    MainActivity.java

     public class MainActivity extends DrawerActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 

    No olvide declarar DrawerActivity en el manifiesto.

    Espero que ayudó.

    Sé que esto es dos años tarde, pero para aquellos que quieren una respuesta aquí es. El Sr. Orlov tuvo una respuesta apropiada, sólo algunos ajustes necesarios.

    • Eliminar el resumen después de público. (Esto es lo que causa un error)
    • Envuelva AMBOS su cajón deslizante y FrameLayout con otro FrameLayout y ajuste el ancho y la altura a match_parent. (Esto permite que aparezcan los dos diseños).

    TAMBIÉN: Si desea que su cajón deslizante aparezca en la parte superior de su diseño (duh!), Luego coloque el frameLayout que es después de la deslizanteDrawer antes de la slidingDrawer.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.