2011-02-07 2 views
5

У меня есть 3 колонки GridView и 4 предмета.Центр детей в GridView

Так получилось, что три из них появляются в первом ряду, а последний во втором ряду, но этот выравнивается влево. Я просто хотел знать, есть ли возможность сделать его по центру в GridView. Как 'T', я не знаю, если я объясняю ... XD

Спасибо :-)

Edit:

Это макет, который содержит GridView

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/section_title_root" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/bg_gd_home_grid"> 
    <ImageView 
    android:src="@drawable/home_grid_txori" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="40dip" 
    android:layout_centerHorizontal="true"/> 
    <GridView 
     android:id="@+id/home_grid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:numColumns="3" 
     android:drawSelectorOnTop="true" 
     android:layout_marginBottom="30dip" 
     android:layout_marginLeft="30dip" 
     android:layout_marginRight="30dip" 
     android:padding="5dip" 
     android:listSelector="@android:color/transparent" 
     android:background="@drawable/bg_home_grid_item" 
/> 
</RelativeLayout> 

Кстати, android:layout_centerHorizontal="true" не работает в GridView

Решение Edit:

Этот вопрос от прошлых лет, но я попросил, чтобы опубликовать решение, и я должен был найти свой старый репо, чтобы получить его :-)

Как я уже говорил ниже в комментариях, Я не смог добиться этого только в формате XML, поэтому мне пришлось обмануть поддельный непереключаемый + неаккуративный элемент на третьей позиции.

Это было мое первое приложение, поэтому я не реализовал рекомендуемое решение «ViewHolder». Я настоятельно рекомендую его использование

Это как мой метод GetView() выглядит в адаптере:

public View getView(int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 

      convertView = (RelativeLayout) mInflater.inflate(
        R.layout.home_grid_item, null); 

     } 

     /* In order to have 4th item centered in the 2nd row, we create an empty 3rd item */ 
     if (position == 3) { 
      convertView.setFocusable(false); 
      convertView.setClickable(false); 
     } else { 
      ImageView imageView = (ImageView) convertView 
        .findViewById(R.id.image); 
      imageView.setImageResource(mThumbs[position]); 
      TextView textView = (TextView) convertView.findViewById(R.id.title); 
      textView.setText(mTitles[position]); 

     } 

     convertView.setTag(mTabTags[position]); 

     return convertView; 
    } 

ответ

1

Вы можете попробовать следующий код:

android:gravity="center_horizontal" 

в XML.

+0

Это не работает ... спасибо! –

+0

Можете ли вы разместить свой xml? – Herter

+0

попробуйте оглядеться здесь. Http://developer.android.com/reference/android/widget/GridView.html#attr_android:gravity – Herter

0

Вот как я решил эту проблему. Я динамически устанавливаю numcolumn, когда точно знаю столбец.

<GridView 
     android:id="@+id/gr_single" 
     android:verticalSpacing="@dimen/pay_mode_icon_margin" 
     android:horizontalSpacing="@dimen/pay_mode_icon_margin" 
     android:columnWidth="@dimen/pay_icon_width" 
     android:gravity="center" 
     android:stretchMode="columnWidth" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

В java.

mGridView.setNumColumns(mSingleImageViews.size()); 
mGridView.setAdapter(new ImageAdapter()); 
Смежные вопросы