簡體   English   中英

在GridView中水平和垂直居中放置視圖組

[英]Center Viewgroup in GridView horizontally and vertically

我目前正在實現GridView,該GridView連接到包含任意數量元素的自定義適配器。

然后,這些元素中的每一個都顯示在一個自定義ViewGroup中,該ViewGroup由一個帶有ImageView的垂直LinearLayout和兩個TextViews組成。 我正在根據可用的屏幕屬性計算ViewGroup的寬度,並希望將其在網格內水平和垂直居中。 問題在於項目顯示在屏幕的最左邊框(沒有任何填充)和屏幕的最右邊框(也沒有任何填充)。 如果我為整個GridView設置了padding或margin,則滾動條將位於項目的側面,而不是看起來很糟糕的屏幕邊框。 這就是為什么我不想為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>

@ dimen / 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

任何幫助將不勝感激!

指定android:columnWidth並設置android:stretchMode="spacingWidthUniform"並擺脫android:horizontalSpacingandroid:verticalSpacing 我希望能解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM