使统一的图像视图显示在嵌套的linearlayout对象中

时间:2013-03-24 14:31:50

标签: android android-layout android-xml

我使用一系列带有TextView对象的ImageButtons作为标题。我希望以统一的大小显示图像,填充屏幕的宽度(UI被强制进入横向模式)。 我的XML布局包括以下内容:           

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ImageButton
                android:id="@+id/imageButtonHolidays"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="@string/holidays"
                android:gravity="center"
                android:onClick="chooseType"
                android:scaleType="fitCenter"
                android:src="@drawable/hagim" />

            <TextView
                android:id="@+id/EditTextHoliday"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="none"
                android:onClick="chooseType"
                android:background="@color/White"
                android:textColor="@color/Black"
                android:text="@string/holidays" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <ImageButton
                android:id="@+id/imageButtonPeople"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="@string/people"
                android:gravity="center"
                android:onClick="chooseType"
                android:scaleType="fitCenter"
                android:src="@drawable/people" />

            <TextView
                android:id="@+id/editTextPeople"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="none"
                android:onClick="chooseType"
                android:background="@color/White"
                android:textColor="@color/Black"
                android:text="@string/professions" />

        </LinearLayout>

    </LinearLayout>

据我所知,两个垂直的LinearLayout对象包含配置了完全相同参数的对象,文本和实际图像对象除外。图像对象的大小完全相同。尽管如此,UI显示以下内容:

Screenshot

非常感谢任何解释。

2 个答案:

答案 0 :(得分:0)

您可以使用weights来避免这种情况。您必须将LinearLayouts的宽度设置为0dp并将权重设置为1.现在两个子视图将占据父视图宽度的50%(我认为这是LinearLayout否则这不起作用。)

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <ImageButton
                android:id="@+id/imageButtonHolidays"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="@string/holidays"
                android:gravity="center"
                android:onClick="chooseType"
                android:scaleType="fitCenter"
                android:src="@drawable/hagim" />

            <TextView
                android:id="@+id/EditTextHoliday"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="none"
                android:onClick="chooseType"
                android:background="@color/White"
                android:textColor="@color/Black"
                android:text="@string/holidays" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <ImageButton
                android:id="@+id/imageButtonPeople"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="@string/people"
                android:gravity="center"
                android:onClick="chooseType"
                android:scaleType="fitCenter"
                android:src="@drawable/people" />

            <TextView
                android:id="@+id/editTextPeople"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="none"
                android:onClick="chooseType"
                android:background="@color/White"
                android:textColor="@color/Black"
                android:text="@string/professions" />

        </LinearLayout>

    </LinearLayout>

答案 1 :(得分:0)

对ImageButton的宽度进行硬编码可产生所需的效果。不像我想的那样优雅或灵活,但它可以在多个平台上运行,所以我想我可以忍受它。

        <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/chooser_bottom_margin"
            android:orientation="vertical" >

            <ImageButton
                android:id="@+id/imageButtonVegFruit"
                android:layout_width="200dp"
                android:layout_height="150dp"
                android:layout_gravity="center"
                android:contentDescription="@string/vegetables"
                android:gravity="center"
                android:onClick="chooseType"
                android:scaleType="fitCenter"
                android:src="@drawable/fruitveg" />

            <TextView
                android:id="@+id/EditTextVegFruit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/White"
                android:gravity="center_horizontal"
                android:inputType="none"
                android:onClick="chooseType"
                android:text="@string/VegFruit"
                android:textColor="@color/Black" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/chooser_bottom_margin"
            android:orientation="vertical" >

            <ImageButton
                android:id="@+id/imageButtonClothes"
                android:layout_width="200dp"
                android:layout_height="150dp"
                android:layout_gravity="center"
                android:contentDescription="@string/clothing"
                android:gravity="center"
                android:onClick="chooseType"
                android:scaleType="fitCenter"
                android:src="@drawable/clothes" />

            <TextView
                android:id="@+id/EditTextClothes"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/White"
                android:gravity="center_horizontal"
                android:inputType="none"
                android:onClick="chooseType"
                android:text="@string/clothing"
                android:textColor="@color/Black" />
        </LinearLayout>
    </LinearLayout>