2010-01-28 10 views
6

Quiero colocar un banner y un menú comunes en cada actividad con pie de página también.¿Cómo implementar una página maestra y secundaria como Actividad en Android?

¿Alguien me puede guiar cómo puedo implementar la página principal y secundaria como asp.net en Android?

Cualquier ayuda sería apreciada.

+0

Hay un pequeño tutorial de cómo hacer una "página maestra" en el diseño de Android - [aquí] (http://jnastase.alner.net/archive/2011/ 01/08/ldquomaster-pagesrdquo-in-android.aspx). –

Respuesta

8

Puede hacer que cada una de sus actividades amplíe una clase base común que tiene un método onCreateOptionsMenu que infla el menú del mismo XML cada vez. Sin embargo, como no puede tener herencia múltiple, esto puede ser complicado cuando quiere tener actividades simples y actividades de lista, por ejemplo.

Otra forma sería tener una clase Util donde tenga un método como setupMenu(Menu) que cada una de sus actividades puede llamar si está haciendo una configuración de menú más compleja.

En términos del diseño de la interfaz de usuario XML para cada una de sus actividades, puede incluir un banner común utilizando la etiqueta <include/>.

+0

para implementar commomn banner ¿podría darme ejemplo por favor? – UMAR

+0

El enlace en mi respuesta tiene un ejemplo. La aplicación de pantalla de inicio de Android incluye todo el diseño de workspace_screen.xml varias veces con la etiqueta . –

0

He tenido el mismo problema y lo he solucionado usando ActivityGroup. Supongo que los elementos del menú moverán al usuario a otra actividad, por lo que con el mismo menú en cada actividad cerrar la aplicación con el botón ATRÁS puede ser casi imposible (después de un tiempo el usuario tendrá que volver a todas las actividades que haya visto).

no he encontrado ninguna buena tutoriales en Inglés por lo que he escrito mío hace algún tiempo (Es un poco demasiado corto y en pulir solo, pero la versión Google Tranlslated debería ser comprensible) check this

También puede comprobar cómo el TabHost works

1

La solución fue bastante fácil.

Es necesario que se extiende "Actividad" Clase, en función onCreate setContentView a su diseño xml base y también es necesario para anular setContentView en las actividades de clase de base

Por ejemplo:

1.Create "base_layout .xml" con el código de abajo

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:background="#000000" 
     android:padding="15dp" > 
    <LinearLayout android:orientation="horizontal" android:background="#000000" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
      android:minHeight="50dp" android:paddingLeft="10dp"> 
      <ImageView android:layout_width="wrap_content" android:id="@+id/ImageView01" 
       android:adjustViewBounds="true" android:layout_height="wrap_content" 
       android:scaleType="fitCenter" android:maxHeight="50dp" /> 
    </LinearLayout> 
    <LinearLayout android:id="@+id/linBase" 
    android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </LinearLayout> 
</LinearLayout>  

2.Crear "BaseActivity.java"

public class BaseActivity extends Activity { 
    ImageView image; 
    LinearLayout linBase;  
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setContentView(R.layout.base_layout);   
     linBase = (LinearLayout)findViewById(R.id.linBase); 
    } 
    @Override 
    public void setContentView(int id) { 
     LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     inflater.inflate(id, linBase); 
    } 
} 

y

public class SomeActivity extends BaseActivity {  
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setContentView(R.layout.some_layout); 
     //rest of code 
    } 
} 

La única cosa que he notado hasta ahora era que al solicitar una barra de progreso (requestWindowFeature (Window.FEATURE_INDETERMINATE_PROGRESS)) esto debe ser hecho antes de llamar super.onCreate. Creo que esto se debe a que aún no se puede dibujar nada antes de llamar a esta función.

Esto funcionó muy bien para mí y espero que esto le resulte útil en su propia codificación.

0

ViewStub es la solución

activity_masterpage.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" >  
<ViewStub android:id="@+id/stub_content" 
       android:inflatedId="@+id/subTree" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 

stub = (ViewStub) findViewById(R.id.stub_content); 
stub.setLayoutResource(R.layout.content_layout); 
stub.inflate(); 
Cuestiones relacionadas