どうしたの、簡単な質問です。GridViewを、RelativeLayoutである親の中央に配置しようとしています。アイテムではなく、グリッド全体を中央に配置したい。私が見ているところによると、デフォルトの配置は「左揃え」であり、この動作を変更することは困難です。ここにある他のSOの質問で提案されている他のいくつかの解決策と、他のいくつかの解決策を試しました。これは些細なことのように思えますが、それほど頭痛の種であってはなりません。GridViewをLinearLayout内に水平方向でラップしようとしましたが、役に立ちませんでした。
私が見つけた唯一の半回避策は、左右のパディングをいじることでしたが、そのアプローチでさえ、側面にあまりにも多くの空きスペースが残っています。
この画像は、パディングを変更する前のものです
この画像は、私がパディングをいじった後のものですが、もう一度..少しハックっぽく見え、実際には私が探しているものではありません。側面に余分なパッドがないフラッシュセンターを探しています
このアプローチが実用的でないもう1つの理由は、余分なスペースが原因です。下の画像に示すように、セレクターが大きすぎるように見えます。
いつものように、これに関するどんな助けも素晴らしいでしょう!
レイアウトのコード
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/weatherFragRoot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<GridView
android:id="@+id/menuGridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/weathermate_lv_background"
android:gravity="center_horizontal"
android:listSelector="@drawable/list_selector"
android:numColumns="3"
android:paddingLeft="30dp"
android:paddingRight="5dp"
android:stretchMode="columnWidth"
android:visibility="invisible" >
</GridView>
</RelativeLayout>
編集
ユーザーが提案したように、各グリッドアイテムの行を独自の相対レイアウトの中央に配置しました。これにより、探していた結果が得られました。ソリューションを反映するために更新されたXMLファイルは次のとおりです
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/weatherFragRoot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<GridView
android:id="@+id/menuGridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/weathermate_lv_background"
android:gravity="center_horizontal"
android:listSelector="@drawable/list_selector"
android:numColumns="3"
android:stretchMode="columnWidth"
android:visibility="invisible" >
</GridView>
</RelativeLayout>
これはグリッド行のレイアウトです。ご覧のとおり、私にとってうまくいったのは、向きを水平に設定し、各子にandroid:layout_centerHorizontal="true"を追加することでした。
<?xml version="1.0" encoding="utf-8"?>
<ImageView
android:id="@+id/menuItem"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:background="@android:drawable/ic_menu_add" >
</ImageView>
<TextView
android:id="@+id/tvMenuItemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/menuItem"
android:layout_centerHorizontal="true"
android:text="Option"
android:textColor="@android:color/white" >
</TextView>
</RelativeLayout>