2011-01-27 62 views
24

我有兩列6個圖像的GridView。我想在屏幕中間顯示這6個圖像。我將重力屬性設置爲中心,但這個中心元素只是水平的。 GridView需要整個屏幕。GridView中的中心元素

<GridView 
    android:id="@+id/gridview" 
    android:layout_above="@id/ad" android:layout_alignParentTop="true" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="2"  
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth"  
    android:background="#ffffff" 
    android:gravity="center" 
/> 

回答

0

試圖改變這一點:
android:layout_height="fill_parent"

android:layout_height="wrap_content"

現在你告訴你的網格視圖,以填補它的父高度和寬度充分。

+0

謝謝。我嘗試過這種方式,但這不能解決問題,元素不會在GridView中垂直居中。 – bimbol 2011-01-27 13:14:29

+0

我有點困惑,但我會盡力幫忙。您是否嘗試將GridView父級設置爲居中所有元素?你也可以嘗試將重力屬性改爲別的東西,看看是否有幫助。這裏是可能的屬性的鏈接http://developer.android.com/reference/android/widget/GridView.html#attr_android:gravity – svidnas 2011-01-28 07:35:41

12

嘗試將GridView包裝到一個LinearLayout中,該LinearLayout具有以子元素爲中心並將GridView的layout_height更改爲「wrap_content」。例如:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:gravity="center" 
    android:layout_gravity="center"> 
    <GridView 
     android:id="@+id/homeGridView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:numColumns="3" 
     android:verticalSpacing="10dp" 
     android:horizontalSpacing="10dp" 
     android:stretchMode="columnWidth" 
     android:gravity="center" /> 
</LinearLayout> 
+0

在我能找到的所有這一切,這是唯一的答案,爲我工作 – 2015-02-05 01:13:15

51

這裏是我做過什麼讓GridView中項目中心(注意stretchmode,columnWidth時,重力以及水平和垂直間距):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:padding="5dp" > 
    <GridView 
     android:id="@+id/gridview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:columnWidth="100dp" 
     android:gravity="center" 
     android:horizontalSpacing="10dp" 
     android:numColumns="3" 
     android:stretchMode="spacingWidthUniform" 
     android:verticalSpacing="10dp" /> 
</LinearLayout> 

我花了一段時間弄清楚,但搞亂那些不同的價值觀,我能夠讓他們居中。

8

需要設置以下屬性:

android:stretchMode="columnWidth" 

......還有......

android:gravity="center" 
5

好,如果你使用的是自定義適配器事情誇大你的GridView內單rowview然後嘗試機器人添加:比重=「中心」你SINGLE_ROW佈局..這也有問題希望:) 即

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/ivClrBlock" 
     android:layout_width="88dp" 
     android:layout_height="88dp" 
     android:layout_marginBottom="5dp" 
     android:layout_marginTop="5dp" 
     /> 

    <TextView 
     android:id="@+id/tvClrName" 
     android:layout_width="88dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="5dp" 
     android:layout_marginTop="5dp" 
     android:gravity="center" 
     android:text="@string/color_name" 
     android:textSize="15sp" /> 

</LinearLayout> 
0

這裏是我的回答:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@id/linearLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <GridView 
     android:id="@+id/gridView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:columnWidth="100dip" 
     android:gravity="center" 
     android:numColumns="3" 
     android:stretchMode="spacingWidthUniform" 
     android:verticalSpacing="10dip" /> 
</LinearLayout> 

不要使用paddinghorizontalSpacing如果你不需要它,因爲它可能會導致其他問題的看法。

另請注意,fill_parent已被棄用。

0

我希望這將解決您的問題:

<LinearLayout 
     android:layout_gravity="center_horizontal" 
     android:gravity="center" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
    <GridLayout 
     android:id="@+id/gridlayou4x3" 
     android:rowCount="4" 
     android:columnCount="3" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="80" 
     android:minWidth="25px" 
     android:minHeight="25px" /> 
    </LinearLayout> 
0

我發現,你只是對heightwidthgridlayout包裹內容。

android:layout_centerHorizontal="true" 

它會自己爲它需要的大小,但如果你有它匹配的父母。您在技術上將其集中於許多父母空白處抵消您的孩子。

0

問題發生時我更新在GridView適配器:

 gridView = inflater.inflate(R.layout.mobile, null); 

 gridView = inflater.inflate(R.layout.mobile, parent, false); 

所以我就轉回使用嘗試捕捉如果老(空)版本失敗。