2010-08-21 8 views
7

Для приложения, которое я делаю, я планирую иметь главное меню, состоящее из 6 разных значков, по 2 на каждую строку. Это очень похоже на макет главного меню Twitter, см. Здесь: nothxКак настроить макет главного меню в Android?

Итак, в основном ... как мне настроить XML? LinearLayout, TableLayout? И затем, что я на самом деле делаю, чтобы значки и текст были равномерно распределены и такие? Я пробовал все, о чем я могу думать до сих пор, но безрезультатно.

+1

Почему бы не попробовать вид сетки? Здесь есть вид этого вида, я думаю, что это может помочь в сочетании с каким-то другим новаторским мышлением. Я предположил, что они тоже доступны для кликов, поэтому все, что вам нужно сделать, это сделать его как случай переключения или что-то в этом роде. – Shouvik

+0

Примите ваше решение, если вы считаете его правильным. Это поможет другим, сталкивающимся с одной и той же проблемой, быстрее найти решение. –

ответ

7

Да использовать GridView & TextView (с CompoundDrawables) - я делал это раньше:

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

    } 
Смежные вопросы