2010-08-21 4 views
7

Pour l'application que je suis en train de faire, je prévois d'avoir un menu principal composé de 6 icônes différentes, avec 2 par ligne. Ceci est très similaire à la disposition du menu principal de Twitter vu ici: nothxComment configurer une disposition de menu principal sous Android?

Donc, fondamentalement ... comment dois-je faire pour configurer le XML? LinearLayout, TableLayout? Et puis, que dois-je réellement faire pour que les icônes et le texte soient uniformément espacés et ainsi de suite? J'ai essayé tout ce que je peux penser jusqu'à présent et en vain.

+1

Pourquoi ne pas essayer une vue de la grille? Il y a ce type de vue ici, je pense que cela pourrait aider couplé avec d'autres idées novatrices .. Je suppose qu'ils sont aussi cliquables, donc tout ce que vous avez à faire est de faire comme un interrupteur ou quelque chose. – Shouvik

+0

Veuillez accepter la réponse si vous pensez que c'est correct. Cela aidera les autres personnes confrontées au même problème à trouver la solution plus rapidement. –

Répondre

7

Oui utiliser GridView & TextView (avec CompoundDrawables) - Je l'ai fait avant:

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; 
     } 

    } 
Questions connexes