使android按钮宽度相同时出现奇怪的视觉问题

时间:2012-01-31 16:01:31

标签: android android-layout

我有一个“后退”和一个“主页”按钮,我试图与屏幕的右上角对齐。我希望两个按钮的大小相同,但仍然是wrap_content,这样它们就不会占用额外的空间。以下布局几乎可以工作,只是主页按钮略微搞砸了,它比后退按钮稍微小一些。

任何人都有任何想法如何解决这个问题?

如果我将第二个LinearLayout更改为fill_parent,则按钮变为均匀宽度并完美对齐,但它们会占用太多空间并变得非常宽。

截图:

http://dl.dropbox.com/u/24225416/Images/back_home_buttons.jpg

代码:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:orientation="horizontal">

                <Button
                    android:id="@+id/home"
                    android:layout_width="0dip"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"                        
                    android:text="Home" />

                <Button
                    android:id="@+id/back"
                    android:layout_width="0dip"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="Back" />

        </LinearLayout>                       

    </RelativeLayout>

</LinearLayout>

谢谢!

2 个答案:

答案 0 :(得分:3)

这是因为您选择的宽度不足以适合第一个按钮的文本。然后文本被包裹在两行上。这反过来导致默认基线对齐机制将第一个按钮向下移动。要实现您的目标,请将属性measureWithLargestChild添加到LinearLayout:

    <LinearLayout
        android:measureWithLargestChild="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:orientation="horizontal">

            <Button
                android:id="@+id/home"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"                        
                android:text="Home" />

            <Button
                android:id="@+id/back"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Back" />

    </LinearLayout>   

答案 1 :(得分:1)

我有同样的问题。原因是,baselineAligned的默认值为true,因此向下移动按钮以使文本位于同一基线上。将LinearLayout上的值设置为false会解决问题。尝试将此属性添加到LinearLayout

android:baselineAligned="false"