2016-08-09 94 views
1

我有一個ImageView。在它下面,我想要一個GridView包含許多較小的圖像。我希望它看起來很整齊......每行4個,頂部和底部間距均勻。對齊Gridview與另一個視圖

目前,間距不算太差(即使在我看來,從左到右的間距看起來比上下間距稍薄),但是我真的很苦惱是最右邊的額外餘量。

我希望網格視圖中圖像的右邊緣與大圖像的右邊緣完全對齊。我究竟做錯了什麼?

這裏是什麼,我現在有一個形象:

enter image description here

這裏是我的佈局:

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



      <ImageView 
       android:id="@+id/items_image" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/placeholder" 
       android:scaleType="fitStart" 
       android:adjustViewBounds="true" 
       style="@style/ItemsImage" /> 

      <GridView 
       android:id="@+id/items_all_images" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:numColumns="4" 
       android:stretchMode="columnWidth" 
       android:clipToPadding="false" 
       android:scrollbarStyle="outsideOverlay" 


       android:verticalSpacing="20dp" 


       style="@style/ItemsImage" 
       /> 

     </LinearLayout> 

    </LinearLayout> 

的ItemsImage風格是這樣的:

<style name="ItemsImage"> 
    <item name="android:gravity">top|left</item> 
    <item name="android:layout_gravity">top|left</item> 
    <item name="android:paddingRight">25dp</item> 
</style> 
+0

我覺得重力應該居中對稱的空間。 –

+0

感謝您的回覆。如果我這樣做,那麼我在左邊緣和最右邊緣都有相同尺寸的多餘空間。我希望邊緣與上面的'ImageView'平均排列。 – b85411

+0

我明白了,您不需要給出正確的填充和XML,就可以設置網格寬度以匹配父級。 –

回答

0

我不知道這是做到這一點的最佳方式,但它可以解決問題。 這些行添加到您的活動的onCreate方法:

YOUR_GRIDVIEW.post(new Runnable() 
{ 
    @Override 
    public void run(){ 
    YOUR_GRIDVIEW.setWidth(YOUR_IMAGE.getWidth()); 
    } 
}); 
+0

'GridView'沒有'setWidth()'函數?我只看到setColumnWidth – b85411

+0

@ b85411然後使用setMinimumWidth方法 – Alikbar

+0

說實話,我認爲GridView的寬度沒有問題。如果我給它一個黑色的背景,我可以看到它對齊...但似乎有一些內部填充各個項目。 – b85411

0

定義固定寬度和高度電網,也爲在GridView的圖像。在網格實例初始化後的代碼中,您可以按如下方式設置間距。

GridView gridView; 
int gridWidth = 1280; 
int gridHeight = 500; 
int gridItemWidth = 60; 
int gridItemHeight = 50; 
int gridRows = 3, gridColumns = 4; 
int vSpacing = (gridHeight - (gridItemHeight * gridRows))/gridRows; 
int hSpacing = (gridWidth - (gridItemWidth * gridColumns))/gridColumns; 
gridView.setLayoutParams(new LayoutParams(gridWidth, gridHeight)); 

gridView.setColumnWidth(gridItemWidth); 
gridView.setNumColumns(gridColumns); 

gridView.setHorizontalSpacing(hSpacing); 
gridView.setVerticalSpacing(vSpacing); 

設置網格寬度等於GridView上方大圖像的大小。 希望它可以幫助你。

相關問題