Центр детей в GridView - PullRequest
       1

Центр детей в GridView

5 голосов
/ 07 февраля 2011

У меня есть 3 столбца GridView и 4 элемента.

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

Спасибо: -)

Редактировать:

Этоэто макет, содержащий 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

Решение Редактировать:

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

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

Это было мое первое приложение, поэтому я не реализовал рекомендованныйРешение "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;
    }

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

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

android:gravity="center_horizontal"

в xml.

0 голосов
/ 19 апреля 2017

Вот как я решил эту проблему. Я динамически устанавливаю 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"/>

В Яве.

mGridView.setNumColumns(mSingleImageViews.size());
mGridView.setAdapter(new ImageAdapter());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...