8

私は GridLayout を持っています (プログラムで子を追加します)。

GridLayout が使用可能なすべてのスペースを埋めるわけではないため、結果は醜いものになります。

結果は次のとおりです。

ここに画像の説明を入力

これは私のXMLです:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
 >

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v7.widget.GridLayout
        android:id="@+id/gridlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white" >
    </android.support.v7.widget.GridLayout>
</HorizontalScrollView>

</ScrollView>
4

6 に答える 6

8

レイアウトの動作はすべて問題ないと思います。

Horizo ​​ntalScrollView内に配置されるGridLayoutandroid:layout_width="match_parent"設定は効果がありません。GridLayoutに挿入された単一の子ビューは、 GridLayout の実際の幅 (垂直ScrollViewコンテナーを使用した場合は高さ) を決定します。これは、親の画面幅よりも大きくなる可能性があります ( width=match_parent設定はここでは効果がありません。また、子ビューにも影響します)。GridLayoutの列と行には、挿入された (この列/行に割り当てられた) 最大の子ビューのサイズがあります。

この全体は非常にダイナミックな構造です。列と行の数は自動的に再計算されます。childviews にlayout_rowlayout_columnのタグを付けることを忘れないでください。必要なサイズを設定することもできます。たとえば、上記のルールに従ってください。

        <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:id="@+id/editText1"
        android:layout_row="2"
        android:layout_column="8" />

したがって、子ビューの幅を変更することで、GridLayout の列の幅を制御できます。次の例を調べることができます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="0dp"
        android:background="#f3f3f3">

        <GridLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#a3ffa3">

            <Button
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="Col 1,Row4"
                android:id="@+id/button"
                android:layout_gravity="center"
                android:layout_row="4"
                android:layout_column="1" />

            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Start.."
                android:layout_column="4"
                android:layout_row="8" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Col 6, Row 1."
                android:id="@+id/button2"
                android:layout_row="1"
                android:layout_column="6" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Col 6, Row 2."
                android:id="@+id/button3"
                android:layout_row="2"
                android:layout_column="6" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="New Button"
                android:id="@+id/button4"
                android:layout_gravity="center"
                android:layout_column="9"
                android:layout_row="3" />

            <TextView
                android:layout_width="300dp"
                android:layout_height="wrap_content"
                android:id="@+id/textView"
                android:layout_row="3"
                android:layout_column="8" />

            <CheckBox
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:text="New CheckBox"
                android:id="@+id/checkBox"
                android:layout_row="6"
                android:layout_column="7"
                android:textColor="#212995" />

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="text"
                android:ems="10"
                android:id="@+id/editText"
                android:layout_row="5"
                android:layout_column="8"
                android:textColor="#952a30" />

        </GridLayout>
    </HorizontalScrollView>
</LinearLayout>

これがお役に立てば幸いです。よろしくお願いします :)

さらに 、上記をプログラムで実現するのは実際には難しいかもしれないことがわかりました。GridLayout を、扱いやすい GridView または TableLayout に変更することを検討している可能性があります。詳細については、次のサイトをご覧ください。

  1. GridLayout.LayoutParams
  2. グリッドレイアウト
  3. gridlayout-not-gridview-how-to-stretch-all-children-evenly
于 2013-09-20T21:56:26.673 に答える
1

LayoutParamsビューを追加するときは、最初にビューに権利を追加することを忘れないでください。

于 2013-10-07T17:52:56.580 に答える
0

多分それは行方不明のためです

</ScrollView>

最後に。

于 2013-09-20T16:42:32.197 に答える