4

基本的に、各セクションのサイズが等しい2x4グリッドに分割する必要があるビューがあります(つまり、各行は画面の高さの25%になり、各列は画面の幅の50%になります)。

私のアプローチは、重みが0.5の2つの内部LinearLayoutを持つ水平LinearLayoutを使用し、それらの各LinearLayoutで子の重みを0.25に設定して、それぞれが画面の25%を占めるようにすることでした。

これは機能しているように見えますが、これは明らかにパフォーマンスに非常に悪いです(ネストされた重みがパフォーマンスに悪い理由については、このスレッドを参照してください?代替案?

これを達成するための代替手段はありますか?私は周りを見回しましたが、これに対する純粋なXMLソリューションを見つけることができません。

以下のLinearLayoutsとその子のセットアップ方法のコード例を参照してください

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:baselineAligned="false"
    android:weightSum="1.0"
    >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="0.5"
        android:weightSum="1.0">        
            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />

            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />

            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />

            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="0.5"
        android:weightSum="1.0">        
            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />

            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />

            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />

            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:src="@drawable/example"
                android:layout_gravity="center_horizontal"
                android:layout_weight="0.25"
            />
    </LinearLayout>
</LinearLayout>
4

2 に答える 2

3

GridLayoutを回転させたい場合があります。

1.6以上のデバイスで利用できるようにするライブラリもあります。

于 2012-05-07T15:03:22.190 に答える
0

LinearLayout内でGridViewを使用します。http://developer.android.com/resources/tutorials/views/hello-gridview.htmlを確認してください

于 2012-05-07T15:05:17.713 に答える