1

我正在开发一个 Android 应用程序的主屏幕,我试图在 android 中按以下方向布置 4 个 ImageButtons:

a | b
_____

c | d

例如A在屏幕左上角居中,b在屏幕右上角居中,c在屏幕左下角居中,d在屏幕右下角居中。所有图像都是 512x512 像素,因此,由于它们非常大,如果屏幕尺寸很小,应该自动缩小。我不关心拉伸它们。

我已经在 Android 中尝试了所有不同类型的布局,但我很难弄清楚这一点,经过 2.5 小时的实验和研究,我正在寻求帮助。有谁知道如何执行此操作或执行此操作的示例开源应用程序?

4

2 回答 2

3

您应该在 LinearLayouts 和 ImageButtons 以及ImageButtonScaleTypes 上设置权重,以使其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>

重量根据儿童总重量的百分比划分空间。因此,如果两个孩子的体重均为 1.0,他们将获得 50% 的空间。为了使权重作用于该视图,您应该指定您希望权重计算为 0dp 的维度。ScaleTypefitXY只是将图像放入ImageButton.

于 2012-06-10T23:24:01.203 回答
0

编辑:似乎趋势是在发布代码之前或之后有某种解释。下面的解决方案由数量不正常的 LinearLayouts 和嵌套权重组成。我首先将屏幕分成上下两部分,然后再将它们分别分成左右两半(注意交替的方向)——给我们四分之一。我假设您希望您的图像位于该区域中心的某个位置,因此我们通过嵌套 weightSum=3 LinearLayouts 将其进一步划分为 9 个 3x3 矩形。最后一步是将 ImageButton(我有 ImageView,但这不重要)放在 3x3 网格的中间 LinearLayout,并给它一个 centerInside 的scaleType- 如果您有足够大的图像并且不必担心拉伸它以填充您的布局,则此 scaleType 是完美的。另外,它不会扭曲纵横比。此外,一个重要因素是使用android:src而不是 android:background,因此 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 回答