2017-04-21 16 views
0

我可否知道是否有任何方法可以使GridView中的物品在中心显示,如果只有一个物品从适配器生成。如果从适配器生成两个项目,它很适合该界面,但如果只有一个项目,它将显示在左侧。我知道这是因为我设置了android:numColumns="2",但是有没有什么方法可以使其动态化,就好像只生成了一个项目,然后它将显示在中心。Android:如何根据生成的不同物品数量在GridView中显示物品

enter image description here

enter image description here

更新我的XML代码:

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center" 
    android:layout_margin="25dp" 
    android:background="@android:color/darker_gray" 
    android:id="@+id/relativeLayout"> 

    <RelativeLayout 
     android:layout_width="800dp" 
     android:layout_height="800dp" 
     android:orientation="horizontal" 
     android:layout_margin="20dp" 
     android:id="@+id/layout"> 

     <TextView 
      android:text="**Recommendation For You**" 
      android:layout_width="800dp" 
      android:layout_height="wrap_content" 
      android:textColor="#000000" 
      android:textSize="20sp" 
      android:textStyle="bold" 
      android:id="@+id/textView15" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 

     <TextView 
      android:text="(Most people will order below food item as well!)" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#000000" 
      android:textSize="14sp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:id="@+id/textView14" 
      android:layout_below="@+id/textView15" 
      android:layout_centerHorizontal="true" /> 

     <GridView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numColumns="auto_fit" 
      android:padding="5dp" 
      android:verticalSpacing="5dp" 
      android:horizontalSpacing="5dp" 
      android:stretchMode="columnWidth" 
      android:layout_below="@+id/textView14" 
      android:layout_marginTop="5dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:layout_marginLeft="100dp" 
      android:layout_marginRight="100dp" 
      android:id="@+id/gridView" /> 

     <TextView 
      android:text="(Click on the VIEW button below for more information!)" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#000000" 
      android:textSize="14sp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:id="@+id/textView13" 
      android:layout_above="@+id/viewButton" 
      android:layout_centerHorizontal="true" /> 

     <Button 
      android:text="View" 
      android:layout_width="130dp" 
      android:layout_height="wrap_content" 
      android:background="#82CAFA" 
      android:textSize="20sp" 
      android:id="@+id/viewButton" 
      android:layout_alignParentBottom="true" 
      android:layout_alignLeft="@+id/textView14" 
      android:layout_alignStart="@+id/textView14" /> 

     <Button 
      android:text="Cancel" 
      android:layout_width="130dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/cancelButton" 
      android:background="#82CAFA" 
      android:textSize="20sp" 
      android:layout_alignParentBottom="true" 
      android:layout_alignRight="@+id/textView14" 
      android:layout_alignEnd="@+id/textView14" /> 

    </RelativeLayout> 

</RelativeLayout> 

回答

0
In your custom Grid View Row Layout set layout_gravity to center and in gridview set numColumns="auto_fit" 

     <GridView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:numColumns="auto_fit" 
      android:padding="5dp" 
      android:verticalSpacing="5dp" 
      android:horizontalSpacing="5dp" 
      android:stretchMode="columnWidth" 
      android:layout_below="@+id/textView14" 
      android:layout_marginTop="5dp" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:layout_marginLeft="100dp" 
      android:layout_marginRight="100dp" 
      android:id="@+id/gridView" /> 

change it to 

     <GridView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:numColumns="auto_fit" 
      android:padding="5dp" 
      android:verticalSpacing="5dp" 
      android:horizontalSpacing="5dp" 
      android:stretchMode="columnWidth" 
      android:layout_below="@+id/textView14" 
      android:layout_marginTop="5dp" 
      android:gravity="center" 
      android:id="@+id/gridView" /> 
+0

我已经试过这种方法,但还是一样.. –

+0

后您网格行布局,使我可以通过 –

+0

已经更新了上面的代码。请看一看。 –

相关问题