Cómo compartir el diseño común entre las actividades sin fragmento

¿Hay alguna manera posible de compartir el diseño (parte) entre las actividades? Por ejemplo, en mi aplicación, todas las actividades tienen un diseño similar, la parte superior es el indicador de operación larga (una barra de progreso, oculto cuando no se ejecuta ninguna operación), la parte inferior es para mostrar errores. Sólo la parte media es diferente para todas las actividades. Vea la imagen de abajo.

Introduzca aquí la descripción de la imagen

Así que mi pregunta es, ¿es posible reutilizar el diseño común (parte de carga y error) para todas las actividades de mi aplicación? (Actualmente no quiero usar fragmento para hacerlo por algunas razones)

Tal vez los recursos de diseño deberían gustar esto:

Carpeta de diseño

activity_common.xml activity_one_content.xml activity_two_content.xml 

Gracias

Puede crear una actividad abstracta de "base" de la que todas sus actividades se extiendan, reemplazando setContentView para combinar la base y las disposiciones de subactividad.

De esta manera puede manejar todo el código de carga / error en la actividad base y simplemente alternar entre ocultar y mostrar las vistas en las sub actividades.

La actividad abstracta:

 public abstract class BaseActivity extends Activity { protected RelativeLayout fullLayout; protected FrameLayout subActivityContent; @Override public void setContentView(int layoutResID) { fullLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.activity_base, null); // The base layout subActivityContent = (FrameLayout) fullLayout.findViewById(R.id.content_frame); // The frame layout where the activity content is placed. getLayoutInflater().inflate(layoutResID, subActivityContent, true); // Places the activity layout inside the activity content frame. super.setContentView(fullLayout); // Sets the content view as the merged layouts. } } 

El archivo de diseño:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <FrameLayout android:id="@+id/loading_frame" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <FrameLayout android:id="@+id/error_frame" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout> 

Usted podría utilizar include en XML para, así .. incluir la parte reutilizable de su código de diseño.

Por ejemplo, aquí está mi archivo de diseño para la Toolbar que usé en mi aplicación:

 // /res/layout/component_toolbar.xml <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:taggr="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/primary" android:minHeight="?attr/actionBarSize" taggr:popupTheme="@style/ThemeOverlay.AppCompat.Light" taggr:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> 

Ahora, diga si quiero usar esa Toolbar nuevo en una Activity diferente, esto es todo lo que tendría que escribir:

 // /res/layout/whatever_layout_this_might_be.xml <include layout="@layout/component_toolbar" /> 

Tenga en cuenta que esto sólo copiar el diseño – no el comportamiento real de dicho widget / componente.

Si quieres copiar todos los aspectos (layout, comportamiento), me temo que Fragment es el único camino a seguir.

Aunque ActivityGroup está deprecated fro API 13, pero si no desea ir con fragmentos, entonces esto puede ser su mejor opción.

Según la documentación, un ActivityGroup es:

Una pantalla que contiene y ejecuta varias actividades incrustadas.

Puede encontrar un tutorial aquí y aquí Aunque el mencionado tutorial utiliza un Tablayout puede reemplazarlo con su diseño común en XML.

Un segundo enfoque podría ser Reutilizar el diseño con etiqueta de inclusión , en este enfoque podría reutilizar su diseño creado una sola vez en todas partes en la aplicación.

  • Cómo capturar el evento de volver a una actividad después de golpear de nuevo
  • OnActivityResult no está siendo llamado en Fragment
  • ¿Por qué se protege onCreate () en la actividad?
  • Cómo conectar una vista de diseño con una actividad
  • Android: presione el botón Atrás mientras AsyncTask se está ejecutando
  • ¿Cómo desarrollar una caminata a través del diálogo que aparece en el primer lanzamiento?
  • Obtener el nombre de actividad de lanzador de una aplicación de Android
  • Android: detección de lanzamiento de aplicaciones desde el hogar o la historia
  • Problema con la cámara cuando cambia la orientación
  • Definir actividad predeterminada (cuando se inicia la aplicación) mediante programación
  • Androide. Fragmento getActivity () a veces devuelve null
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.