1

私はAndroidアプリケーションのホーム画面を開発しており、Androidで4つのImageButtonを次の方向にレイアウトしようとしています。

a | b
_____

c | d

たとえば、Aは画面の左上の中央に配置され、bは画面の右上の中央に配置され、cは画面の左下の中央に配置され、dは画面の右下の中央に配置されます。すべての画像は512x512ピクセルであるため、非常に大きいため、画面サイズが小さい場合は自動的に縮小する必要があります。私はそれらを伸ばすことには関心がありません。

私はAndroidで基本的にすべての種類のレイアウトを試しましたが、2.5時間の実験と調査の後、助けを求めてこれを理解しようとするとひどい時間を過ごしています。誰かがこれを行う方法またはこれを行うサンプルのオープンソースアプリを知っていますか?

4

2 に答える 2

3

このようにImageButtonLinearLayoutsとImageButtonsおよびScaleTypesに重みを設定する必要がありますfitXY

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1.0"
        android:orientation="horizontal>
        <ImageButton
            android:src="@drawable/myimage1"
            android:layout_height="fill_parent"
            android:layout_width="0dp"
            android:layout_weight="1.0"
            android:scaleType="fitXY"/>
        <ImageButton
            android:src="@drawable/myimage2"
            anroid:layout_height="fill_parent"
            android:layout_width="0dp"
            android:layout_weight="1.0"
            android:scaleType="fitXY"/>
    </LinearLayout>
    <LinearLayout
         //same as above horizontal layout with same children for buttons 3 and 4
    </LinearLayout>
</LinearLayout>

体重は、子供の総体重のパーセンテージに従ってスペースを分割します。したがって、2人の子供がそれぞれ体重1.0の場合、スペースの50%を取得します。ウェイトがそのビューに作用するようにするには、ウェイトを0dpに計算するディメンションを指定する必要があります。ScaleTypefitXYは、で使用可能なスペースに画像をちょうど適合させますImageButton

于 2012-06-10T23:24:01.203 に答える
0

編集:コードを投稿する前または後に、ある種の説明をする傾向があるようです。以下のソリューションは、不健全な量のLinearLayoutsとネストされたウェイトで構成されています。最初に画面を上半分と下半分に分割し、次にそれぞれを左半分と右半分に分割しました(向きが交互になっていることに注意してください)。これで4分の1になります。画像をその四半期の中央のどこかに配置したいと思ったので、weightSum = 3 LinearLayoutsをネストして、さらに9つの3x3の長方形に分割しました。最後のステップは、ImageButton(ImageViewがありましたが、それは問題ではありません)を3x3グリッドの中央のLinearLayoutに配置し、scaleTypeをcenterInsideにすることです。-このscaleTypeは、十分な大きさの画像があり、レイアウト全体に拡大する必要がない場合に最適です。さらに、アスペクト比を歪めることもありません。また、重要な要素は、android:backgroundの代わりにandroid:srcを使用することです。これにより、ImageViewはscaleTypeを尊重します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="2">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:weightSum="2"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="3"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="3">
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                    <ImageView
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:src="@drawable/ic_launcher"
                        android:scaleType="centerInside">
                    </ImageView>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="3"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="3">
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                    <ImageView
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:src="@drawable/ic_launcher"
                        android:scaleType="centerInside">
                    </ImageView>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:weightSum="2"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="3"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="3">
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                    <ImageView
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:src="@drawable/ic_launcher"
                        android:scaleType="centerInside">
                    </ImageView>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:weightSum="3"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="3">
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                    <ImageView
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:src="@drawable/ic_launcher"
                        android:scaleType="centerInside">
                    </ImageView>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="0dip"
                    android:layout_height="fill_parent"
                    android:layout_weight="1">
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1">
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
于 2012-06-10T23:46:02.603 に答える