2010-08-21 12 views
7

Para la aplicación que estoy haciendo, planeo tener un menú principal compuesto por 6 iconos diferentes, con 2 por línea. Esto es muy similar al diseño del menú principal de Twitter que se ve aquí: nothx¿Cómo configurar un diseño de menú principal en Android?

Entonces, básicamente ... ¿cómo debo proceder para configurar el XML? LinearLayout, TableLayout? Y entonces, ¿qué hago para que los íconos y el texto se espacien de manera uniforme y tal? He intentado todo lo que puedo pensar hasta ahora y fue en vano.

+1

por qué no intentar una vista de cuadrícula? Aquí hay este tipo de vista, creo que esto podría ayudar junto con algún otro pensamiento innovador. Supongo que también pueden hacer clic, así que todo lo que tienes que hacer es hacerlo como una caja de conmutación o algo así. – Shouvik

+0

Acepte la respuesta si cree que es correcta. Ayudará a otros que enfrentan el mismo problema a encontrar la solución más rápido. –

Respuesta

7

Sí usar GridView & TextView (con CompoundDrawables) - Hice esto antes:

main.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"> 
    <GridView android:id="@+id/grid" android:numColumns="2" 
     android:horizontalSpacing="20dip" android:verticalSpacing="20dip" 
     android:stretchMode="columnWidth" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 
</LinearLayout> 

MainActivity:

GridView grid = (GridView) findViewById(R.id.grid); 
     grid.setAdapter(new HomeScreenShortcutAdapter()); 
     grid.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View v, int position, 
        long id) { 

       startActivity(i); // Specify activity through Intent i 
      } 
     }); 

public class HomeScreenShortcutAdapter extends BaseAdapter { 



     HomeScreenShortcutAdapter() { 

     } 

     @Override 
     public int getCount() { 
      return 0; 
     } 

     @Override 
     public Object getItem(int position) { 
      return null; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      TextView tv; 
      final Object data = getItem(position); 

      if (convertView == null) { 

       tv = new TextView(getApplicationContext()); 
       tv.setGravity(Gravity.CENTER); 

      } else { 
       tv = (TextView) convertView; 
      } 

      Drawable icon = data.icon; 
      CharSequence title = data.title; 

      tv.setCompoundDrawablesWithIntrinsicBounds(
        null, icon, null, null); 
      tv.setText(title); 
      tv.setTag(data); 

      return tv; 
     } 

    } 
Cuestiones relacionadas