中央に配置される2列のGridLayoutを作成しようとしています。
私のデザインは次のとおりです。
<GridLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
custom:rowCount="4"
custom:columnCount="2"
Android:orientation="horizontal">
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:gravity="top|left"
Android:background="#00FF00"
custom:color="green"
custom:layout_row="0"
custom:layout_column="0" />
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:gravity="top|left"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="blue"
custom:layout_row="0"
custom:layout_column="1" />
</GridLayout>
そしてそれは次のようになります:
そして、このボタンを中央に配置し、それらの間隔を完全に揃えたいと思います。
出来ますか?
-編集:
また、結果なしでLinearLayoutに入れようとしました:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:gravity="center"
Android:orientation="vertical">
<GridLayout xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
custom:rowCount="4"
custom:columnCount="2"
Android:orientation="horizontal"
Android:gravity="center"
Android:layout_gravity="center">
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="green"
custom:layout_row="0"
custom:layout_column="0" />
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="blue"
custom:layout_row="0"
custom:layout_column="1" />
</GridLayout>
</LinearLayout>
グリッドのコンテンツをlayout_width="wrap_content"
で水平方向に折り返し、layout_gravity
をcenter
に設定します。
<GridLayout
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="center"
// ......
>
GridLayoutの余分なスペースの分布は、重みではなく優先度に基づいています。
(...)
列を引き伸ばすには、その中のすべてのコンポーネントが重力を定義していることを確認してください。
したがって、明らかにlayout_gravity
をAndroid:layout_gravity="top|center"
に設定する必要があります(これはテストしていませんが、ドキュメントからはこれらの行に沿っているはずです)。
あなたはほとんどそこにいます。私はこれが仕事をすると思う:
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<GridLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
custom:rowCount="4"
custom:columnCount="2"
Android:layout_gravity="center_horizontal"
Android:orientation="horizontal">
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="green"
custom:layout_row="0"
custom:layout_column="0" />
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="blue"
custom:layout_row="0"
custom:layout_column="1" />
</GridLayout>
</FrameLayout>