首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使GridView的内容居中

使GridView的内容居中
EN

Stack Overflow用户
提问于 2013-05-03 00:05:19
回答 2查看 123关注 0票数 0

我的GridView本身是居中的,但它的内容并不居中。这是一个屏幕,其中底部和右侧的浅蓝色是我为GridView设置的背景颜色。

您可以看到,内容被向上推送到顶部和左侧。我想要的内容,我的游戏板,居中恰好在GridView的中间,用浅蓝色的背景色均匀地包围所有的边。

下面是我的XML:

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/textFieldFU"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<GridView
    android:id="@+id/gridview"
    android:layout_marginTop="0dp"
    android:layout_marginLeft="45dp"
    android:layout_marginRight="45dp"
    android:layout_width="fill_parent"
    android:layout_height="485dp"
    android:gravity="center"
    android:horizontalSpacing="0dp"
    android:numColumns="8"
    android:background="@android:color/holo_blue_bright"
    android:verticalSpacing="0dp" />

在我的ImageAdapter类中添加我的getView

代码语言:javascript
复制
    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView iv;
    if (convertView != null) {
        iv = (ImageView) convertView;
    } else {
        iv = new ImageView(context);
        iv.setLayoutParams(new GridView.LayoutParams(60, 60));
        iv.setScaleType(ScaleType.FIT_CENTER);
        iv.setPadding(0, 0, 0, 0);
        if(position < 8 && position % 2 ==0){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else if(position > 7 && position < 16 && position % 2 ==1){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else if(position > 15 && position < 24 && position % 2 ==0){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else if(position > 23 && position < 32 && position % 2 ==1){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else if(position > 31 && position < 40 && position % 2 ==0){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else if(position > 39 && position < 48 && position % 2 ==1){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else if(position > 47 && position < 56 && position % 2 ==0){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else if(position > 55 && position < 64 && position % 2 ==1){
            iv.setBackgroundColor(Color.DKGRAY);
        }
        else
            iv.setBackgroundColor(Color.GRAY);
    }
    iv.setImageResource(images[position]);
    return iv;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-03 01:03:03

尝试使用these options在视图周围创建边框。我会避免任何任意的固定值,比如45dp的边距和485dp的高度,因为它在其他屏幕尺寸上肯定看起来不合适。

另外,我建议你使用GridLayout而不是GridView。从技术上讲,它需要API级别14,但您可以使用支持库中的API来支持旧版本的Android。这不是一个微不足道的更改,因为您需要通过调用addView而不是覆盖getView方法来添加tiles。

GridLayout更适合于具有固定数量的始终显示的平铺的图形网格。GridView是一个复杂得多的小部件,它有很多用于延迟加载磁贴的内部逻辑,这里您当然不需要这些逻辑。这也可能使布局变得更容易。

票数 1
EN

Stack Overflow用户

发布于 2013-05-03 00:37:53

在网格视图描述中添加以下行:

代码语言:javascript
复制
android:layout_centerInParent="true"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16342717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档