0

我正在使用一系列带有 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 对象包含配置了完全相同参数的对象,除了文本和实际的图像对象。图像对象的大小完全相同。尽管如此,用户界面显示以下内容:

截屏

任何解释将不胜感激。

4

2 回答 2

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>
于 2013-03-25T13:59:35.963 回答
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>
于 2013-03-24T15:07:21.137 回答