2011-10-20 9 views
12

Muchas aplicaciones populares como Google Maps, Facebook, Foursquare, etc. tienen barras de encabezado y/o pie de página en la mayoría de sus actividades. Estos encabezados a menudo incluyen botones muy útiles, y Me gustaría crear uno para mi aplicación. ¿Alguien sabe cómo se hacen? No he podido encontrar nada hasta el momento.Cómo creo una barra de botones de encabezado o pie de página para mi aplicación Android

Aquí hay algunas fotos de lo que quiero decir: http://www.flickr.com/photos/calebgomer/6262815430 http://www.flickr.com/photos/calebgomer/6262815458

Respuesta

14

Usando esta manera usted puede hacer su header-footer xml y utilizarlo para cualquiera de su activity también sólo tiene que escribir el código para los controles en cabecera -más de una vez en HeaderFooter.java y puede acceder a su proyecto.

Construir su HederFooter.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:weightSum="10" 
    android:id="@+id/commonlayout" android:background="#FFFFFF"> 
    <LinearLayout android:id="@+id/llheader" 
     android:layout_width="fill_parent" android:layout_height="0dp" 
     android:background="@drawable/bar" android:layout_weight="1"> 



     <RelativeLayout android:id="@+id/relativeLayout1" 
      android:layout_width="fill_parent" android:layout_height="fill_parent" 
      android:layout_gravity="center"> 
      <Button 
       android:id="@+id/Button_HeaderFooterSubscribe" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_marginRight="2dp" 
       android:layout_centerVertical="true" 
       android:background="@drawable/subscribe" 
       /> 
       <Button 
       android:id="@+id/Button_logout" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_marginRight="2dp" 
       android:layout_centerVertical="true" 
       android:background="@drawable/logout" 
       /> 
       <Button 
       android:id="@+id/Button_playlist" 
       android:layout_marginLeft="2dp" 
       android:layout_width="wrap_content" 
       android:layout_centerVertical="true" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:background="@drawable/tempadd" 
       /> 



</RelativeLayout> 

    </LinearLayout> 
    <LinearLayout android:id="@+id/lldata" 
     android:layout_weight="8" android:layout_width="fill_parent" 
     android:layout_height="0dp" android:background="#FFFFFF"> 


    </LinearLayout> 

    <LinearLayout android:id="@+id/llfooter" 
     android:layout_weight="1" android:layout_width="fill_parent" 
     android:orientation="horizontal" android:layout_height="0dp" 
     android:visibility="visible" android:background="@drawable/fbg" 
     android:weightSum="5.0" android:gravity="center" 
     android:layout_margin="0dp"> 

     <Button android:id="@+id/home" android:layout_height="wrap_content" 
      android:layout_width="wrap_content" android:layout_weight="1" 
      android:background="@drawable/home" android:textColor="#FFFFFF" 
      android:padding="10px"></Button> 

     <Button android:id="@+id/issue" android:layout_height="wrap_content" 
      android:layout_width="wrap_content" android:layout_weight="1" 
      android:background="@drawable/issue" android:textColor="#FFFFFF" 
      android:padding="10px"></Button> 

     <Button android:id="@+id/browse" android:layout_height="wrap_content" 
      android:layout_width="wrap_content" android:layout_weight="1" 
      android:background="@drawable/browse" android:textColor="#FFFFFF" 
      android:padding="10px"></Button> 

     <Button android:id="@+id/search" android:layout_height="wrap_content" 
      android:layout_width="wrap_content" android:layout_weight="1" 
      android:background="@drawable/search" android:textColor="#FFFFFF" 
      android:padding="10px"></Button> 

     <Button android:layout_height="wrap_content" android:id="@+id/favorite" 
      android:background="@drawable/favorite" android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:textColor="#FFFFFF" android:padding="10px"></Button> 
    </LinearLayout> 

</LinearLayout> 

, cree uno HeaderFooter.java Actividad

public class HeaderFooter extends Activity { 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.headerfooter); 
     } 
} 

se extienden ahora por encima de la actividad a sus todas las demás actividades e inflar su visión particular en el diseño del medio de headerfooter.xml

public class Home extends HeaderFooter 
{ 
     @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      ViewGroup vg = (ViewGroup) findViewById(R.id.lldata); 
      ViewGroup.inflate(Home.this, R.layout.home, vg); 
     } 
} 
+1

Este enfoque funcionó muy bien, ¡gracias! (El único problema es que el pie tiene un muy pequeño espacio entre él y la parte inferior de la pantalla) –

+0

@CalebGomer he actualizado xml usarlo y ese problema será solved..tell mí si noy – MKJParekh

+1

Eso lo arregló! De nuevo, gracias por tu ayuda. –

2

Basta con crear un xml como sea necesario.

Agregue estos XML a sus otras pantallas usando la etiqueta en sus otros XML de pantalla.

Sample is here.

usted puede manejar el clic de botón como sea necesario en cada actividad.

Espero que esto ayude.

+0

He trabajado en Android antes. Tengo aplicaciones en funcionamiento, solo me gustaría que su GUI se vea mejor. Voy a ver esas muestras y ver qué puedo hacer. Gracias! –

+0

@Vinay No solo proporcione el enlace que este enlace está roto. Por favor, actualice su enlace. – BBdev

0

Diseñe el diseño Xml con encabezado, pie de página y cuerpo. Debe ampliar la actividad principal cada vez, debe cambiar el cuerpo inflando el diseño deseado.

0

Creo que el elemento que te gusta en esos diseños es el hecho de que están utilizando un FrameLayout para la parte inferior de la pantalla.

Probablemente están haciendo algo como esto:

<LinearLayout android:orientation="vertical 
    .../> 
<head layout element> 
<FrameLayout element> 
<footer layout element> 
</LinearLayout> 
+0

¿Existe alguna diferencia entre usar un pie de página de LinearLayout y usar un FrameLayout para el pie de página? –

+0

No es el pie de página el framelayout. El panel de contenido es el diseño del marco. He editado mi respuesta para ser más específico. –

+0

Veo a qué te refieres. Cambié el "cuerpo" de LinearLayout a FrameLayout, pero no vi una diferencia entre los dos. ¿Hay ventajas prácticas para usar FrameLayout en esta situación? –

Cuestiones relacionadas