2012-04-26 75 views
0

我目前实现其连接至保持元件的任意量的定制适配器一个GridView。中心的ViewGroup在GridView的水平和垂直

每一元素,然后在由垂直的LinearLayout的与ImageView的和两个TextViews定制的ViewGroup所示。我正在计算ViewGroup的宽度,它基于可用的屏幕属性,并且想要在网格中水平和垂直居中。问题是,该项目在屏幕的最左边的边框显示(没有任何填充),并在屏幕的最右边界(也没有任何填充)。如果我为整个GridView设置了填充或边距,则滚动条将位于项目的一侧,而不是位于屏幕边缘,这看起来很糟糕。这就是为什么我不想为GridView设置填充但将元素居中的原因。

这里是我的GridView的代码:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/launchLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <com.markupartist.android.widget.ActionBar 
      android:id="@+id/actionbar" 
      style="@style/ActionBar" 
     /> 

    <GridView 
      android:id="@+id/grid" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     android:verticalSpacing="@dimen/launch_grid_padding" 
     android:horizontalSpacing="@dimen/launch_grid_padding" 
      android:numColumns="auto_fit" 
      android:stretchMode="columnWidth" 
      android:gravity="center" 
      android:listSelector="#00000000" 
      android:layout_marginTop="@dimen/launch_grid_padding" 
      android:layout_marginBottom="@dimen/launch_grid_padding" 
    /> 
    </LinearLayout> 

</RelativeLayout> 

@扪/ launch_grid_padding有20dp的值。

这是我自定义的ViewGroup布局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:background="@drawable/rounded_box" 
    android:layout_gravity="center" 
> 
    <ImageView 
     android:id="@+id/img" 
     android:layout_width="120dp" 
     android:layout_height="84dp" 
     android:scaleType="centerInside" 
    /> 
    <TextView 
     android:id="@+id/identifier1" 
     android:layout_width="120dp" 
     android:layout_height="wrap_content" 
     android:background="@android:color/white" 
     android:gravity="left|center_vertical" 
     android:typeface="sans" 
     android:textStyle="bold" 
     android:textColor="#333333" 
     android:textSize="12dp" 
     android:lines="1" 
     android:ellipsize="marquee" 
    /> 
    <TextView 
     android:id="@+id/identifier2" 
     android:layout_width="120dp" 
     android:layout_height="wrap_content" 
     android:textColor="#333333" 
     android:background="@android:color/white" 
     android:gravity="left|center_vertical" 
     android:textSize="10dp" 
     android:lines="1" 
    /> 
</LinearLayout> 

这是多了还是少了什么,我试图完成(与项目数量可变的):

http://www.appdesignvault.com/wp-content/uploads/2012/04/iphone-app-design-bizapp-5.jpg

任何帮助将不胜感激!

回答

4

指定android:columnWidth并设置android:stretchMode="spacingWidthUniform"并摆脱android:horizontalSpacingandroid:verticalSpacing。我希望这能解决问题。

+0

谢谢,这或多或少地解决了这个问题。我仍然必须定义verticalSpacing。 – 2012-04-29 17:56:34