水平线性布局缩放不按预期工作

时间:2015-05-27 09:31:33

标签: android

我有一个活动,我使用水平线性布局来托管3个项目。一个图像按钮(上一个按钮),一个ViewFlipper和另一个imageButton(下一个按钮)。目标是当我单击下一个和上一个按钮时,viewFlipper将翻转其中的项目。

为了清楚理解,我设置了每个项目的背景颜色,用刺眼的纯色,并用相同的颜色标记组件树中的相应项目。

enter image description here

enter image description here

ViewFlipper(红色区域)的高度和宽度设置为width = fill_parent, height = Fill_parent

现在,如果我设置水平线性布局(绿色区域)width = fill_parent, height = Fill_parent,则会裁剪两个图像按钮。两个图片按钮的width x height50dp x 50dp

如果我将ViewFlipper(红色区域)的宽度更改为Wrap_Content,则按钮完全可见。但是两侧都有巨大的浪费空间,在实际的平板电脑上运行时更加明显。

enter image description here

如何修复布局以便在任何屏幕上缩放和适当缩放项目?我的布局XML在下面提供。

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="top|center_horizontal"
        android:background="#ff1cff1f">

        <ImageButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/ibPrevTemplate"
            android:src="@drawable/selector_prev_template"
            android:scaleType="fitXY"
            android:background="#00ffffff"
            android:layout_gravity="left|center_vertical"
            android:layout_marginRight="5dp" />

        <ViewFlipper
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:id="@+id/vfChooseTemplate"
            android:layout_below="@+id/textView"
            android:layout_alignParentStart="true"
            android:layout_marginTop="20dp"
            android:animateFirstView="true"
            android:background="#ffff2a0e">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center_horizontal">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/template_OverlayedText"
                    android:id="@+id/textView3"
                    android:textSize="24sp"
                    android:textStyle="bold" />

                <ImageView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageView3"
                    android:layout_marginTop="15dp"
                    android:layout_marginBottom="15dp"
                    android:src="@mipmap/template_textoverimage" />

            </LinearLayout>

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center_horizontal">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/template_TextUnderImage"
                    android:id="@+id/textView5"
                    android:textStyle="bold"
                    android:textSize="24sp" />

                <ImageView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageView4"
                    android:layout_marginTop="15dp"
                    android:layout_marginBottom="15dp"
                    android:src="@mipmap/template_textunderimage" />

            </LinearLayout>

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center_horizontal">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/template_ImageBetweenText"
                    android:id="@+id/textView7"
                    android:textStyle="bold"
                    android:textSize="24sp" />

                <ImageView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/imageView6"
                    android:layout_marginTop="15dp"
                    android:layout_marginBottom="15dp"
                    android:src="@mipmap/template_imagebetweentext" />

            </LinearLayout>

        </ViewFlipper>

        <ImageButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/ibNextTemplate"
            android:src="@drawable/selector_next_template"
            android:scaleType="fitXY"
            android:background="#00ffffff"
            android:layout_marginLeft="5dp"
            android:layout_gravity="center_vertical|right" />

    </LinearLayout>

1 个答案:

答案 0 :(得分:1)

您可以尝试使用:

<ViewFlipper
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:id="@+id/vfChooseTemplate"
            android:layout_below="@+id/textView"
            android:layout_alignParentStart="true"
            android:layout_marginTop="20dp"
            android:animateFirstView="true"
            android:background="#ffff2a0e">

这样,它应该填满可用空间。