在GridView中居中的孩子

时间:2011-02-07 16:08:32

标签: android gridview

我有一个3列GridView和4个项目。

所以碰巧它们中的三个出现在第一行,而最后一行出现在第二行,但是这一行与左边对齐。我只是想知道是否有可能使它显示在GridView的中心位置。就像'T',我不知道我是否解释...... 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位欺骗假的不可点击+不可聚焦的项目。

这是我的第一个App,所以我没有实现推荐的“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 个答案:

答案 0 :(得分:1)

您可以尝试以下代码:

android:gravity="center_horizontal"
xml中的

答案 1 :(得分: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());