[英]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:horizontalSpacing
和android:verticalSpacing
。 我希望能解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.