0

現在、任意の量の要素を保持するカスタム アダプターに接続されている GridView を実装しています。

これらの各要素は、ImageView と 2 つの TextView を持つ垂直 LinearLayout で構成されるカスタム ViewGroup に表示されます。利用可能な画面領域に基づいて ViewGroup の幅を計算しており、グリッド内で水平方向および垂直方向に中央揃えにしたいと考えています。問題は、項目が画面の左端 (パディングなし) と画面の右端 (パディングなし) に表示されることです。GridView 全体にパディングまたはマージンを設定すると、スクロールバーが画面の境界線ではなく項目の横に表示され、見栄えが悪くなります。そのため、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 の値は 20 dp です。

そして、これは私のカスタム 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

どんな助けでも大歓迎です!

4

1 に答える 1

4

とを指定android:columnWidthして設定し、android:stretchMode="spacingWidthUniform"取り除きます。それが問題を解決することを願っています。android:horizontalSpacingandroid:verticalSpacing

于 2012-04-26T20:23:07.240 に答える