当具有相同大小的两个按钮加上一个在中心拉伸的按钮时,LinearLayout文本换行问题

时间:2010-08-20 10:52:41

标签: android layout android-linearlayout

看起来有很多关于居中,相同尺寸等的问题,但到目前为止我没有找到我的情况,所以我敢问:)

我需要的是这样的三个按钮的布局:

[ previous ][*select*] [  next  ]

其中 [previous] [next] 按钮属于相同大小(即在这种情况下,的大小[上一页] 按钮,因为它更大), [* select *] 按钮应拉伸以占据所有可用宽度。

按照在LinearLayout中制作相同大小的两个按钮的提示,我想出了以下xml文件:

<LinearLayout
    android:id="@+id/button_bar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal" >

    <Button
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="Previous" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:text="Select" />

    <Button
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="Next" />

</LinearLayout>

几乎有效:) 除了一件事:不是让下一步按钮匹配上一页按钮的大小,而是让上一页按钮成为下一步 :) 因此,“Previous”文本包含在两行中,如

Previ
ous

Dunno如果这是一个bug或者没有,但是你能告诉我一个解决方法或其他方法来实现所需的布局吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

我建议使用RelativeLayout

<RelativeLayout
    android:id="@+id/buttons"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:clickable="false">

    <Button
    android:id="@+id/previous"

    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:text="Previous" 

    android:layout_alignParentLeft="true"/>

    <Button
    android:id="@+id/next"

    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:text="Next" 

    android:layout_alignParentRight="true"/>

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Select"

    android:layout_toRightOf="@id/previous"
    android:layout_toLeftOf="@id/next" />
</RelativeLayout>

这应该有用。

答案 1 :(得分:1)

如果您要包含“android:layout_weight”,您应该将“android:layout_width”或“android:layout_height”指定为“fill_parent”

像这样修改你的代码

<LinearLayout
android:id="@+id/button_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:text="Previous" />

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1.5"
    android:text="Select" />

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:text="Next" />

答案 2 :(得分:0)

在那种情况下,我会选择一个TableLayout,其中你有一行,EACH按钮的权重为1。并将stretchColumn属性放到第1列。这有什么不同吗?

答案 3 :(得分:0)

除了在代码中执行此操作之外,我不确定您是否可以将大小与其他大小相匹配。最简单的解决方案可能是以dp / sp为单位调整上一个和下一个按钮宽度,直到它们看起来很好并且选择按钮是唯一具有layout_weight属性的按钮。