7

私たちはICS+を対象としたアプリを作成しており、GridLayoutが最適なレイアウトパラダイムであると信じていますが、それについてはほとんど書かれていないようで、いくつかの配置の問題があります。

<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/row_background"
    android:rowCount="1"
    android:columnCount="3"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:useDefaultMargins="true"
    android:background="@drawable/list_item_bg">

    <ImageView
        android:id="@+id/visibilityIcon"
        android:layout_row="0"
        android:layout_column="0"
        android:src="@drawable/visibility_icon" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>

    <ImageView
        android:id="@+id/windIcon"
        android:layout_row="0"
        android:layout_column="1"
        android:src="@drawable/wind_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>

    <ImageView
        android:id="@+id/crosswindIcon"
        android:layout_row="0"
        android:layout_column="2"
        android:src="@drawable/cloud_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>

</GridLayout>

ただし、左の2つのアイコンは左揃えのままで、右端のアイコンは残りのスペースの中央に配置されます。

基本的に、各列のサイズを合計画面サイズの1/3(3列以降)に指定する必要があります。これはGridLayoutが行ったことだと思いましたが、「wrap_content」によってこの動作が発生するようです(意味があります)が、「match_parent」により、最初の列がセルを埋めるのではなく、画面全体を埋めます。これは、私が期待した動作です。

重力、layout_gravityなどのすべての組み合わせを試したようですが、根本的に間違っているか、GridLayoutの制限を見つけました。

ご協力いただきありがとうございます!

4

1 に答える 1

8

GridLayoutで成長できるのは1つの行と1つの列のみであり、それはその軸に沿った重力を持つものです。複数の行または列が重力を指定している場合、1つだけが重力を取得します(私が覚えている場合、それは「最後の」ものです)。別のレイアウトを選択するか、独自のレイアウトを作成してください。アイコンが均等に分割された行のみが必要な場合は、コンポーネントの幅が0pxで、重みがすべて同じ(1など)のLinearLayoutを使用できます。

于 2012-09-11T22:58:40.967 に答える