2

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

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

[ previous ][*select*] [  next  ]

其中[previous][next]按钮的大小相同(即在这种情况下,[previous]按钮的大小更大),并且[*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>

几乎可以工作:) 除了一件事: android不是让Next按钮与Previous按钮的大小相匹配,而是让Previous按钮成为Next的大小:) 正因为如此,文本“Previous”被包裹在两行中,像

Previ
ous

不知道这是否是一个错误,但你能给我一个解决方法或其他方法来实现所需的布局吗?

谢谢!

4

4 回答 4

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>

这应该有效。

于 2010-08-20T11:13:47.217 回答
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" />

于 2010-08-20T11:19:26.163 回答
0

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

于 2010-08-20T11:04:01.490 回答
0

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

于 2010-08-20T11:05:45.523 回答