2010-08-21 10 views
7

Per l'app che sto creando, ho in programma di avere un menu principale composto da 6 icone diverse, con 2 per riga. Questo è molto simile al layout del menu principale di Twitter visto qui: nothxCome configurare un layout del menu principale in Android?

Quindi in pratica ... come dovrei andare a configurare l'XML? LinearLayout, TableLayout? E poi, cosa faccio realmente per ottenere che le icone e il testo siano equidistanti e tali? Ho provato tutto quello che riesco a pensare finora e senza risultato.

+1

perché non provare una visualizzazione a griglia? C'è questo tipo di vista qui, penso che questo potrebbe essere d'aiuto in coppia con qualche altro pensiero innovativo .. Suppongo che siano cliccabili anche in questo modo tutto ciò che devi fare è renderlo come un caso di commutazione o qualcosa del genere. – Shouvik

+0

Si prega di accettare la risposta se si ritiene che sia corretta. Aiuterà gli altri che affrontano lo stesso problema a trovare la soluzione più velocemente. –

risposta

7

Si usa GridView & TextView (con CompoundDrawables) - L'ho fatto prima:

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

    } 
Problemi correlati