代码之家  ›  专栏  ›  技术社区  ›  dimsuz

当有两个相同大小的按钮加上一个在中间拉伸时,线性布局文本换行问题

  •  2
  • dimsuz  · 技术社区  · 14 年前

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

    [ previous ][*select*] [  next  ]
    

    哪里 [上一页] [下一步] 按钮是 相同的 尺寸(即在这种情况下 [上一页] [*选择*] 按钮应拉伸以占据所有可用宽度。

    <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
    

    谢谢您!

    4 回复  |  直到 14 年前
        1
  •  1
  •   Maragues    14 年前

    我建议用相对论

    <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>
    

    这应该管用。

        2
  •  1
  •   Eby    14 年前

    如果你包括“安卓:布局重量“你应该给任何一个”android:布局宽度“或”android:布局高度作为“填充父对象”

    像这样修改代码

    <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" />
    

        3
  •  0
  •   Sephy    14 年前

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

        4
  •  0
  •   DonSteep    14 年前

    我不知道你是否可以匹配的大小,其他一些除了这样做的代码。最简单的解决方案可能是调整dp/sp单位中的上一个和下一个按钮宽度,直到它们看起来很好,并且只有select按钮具有layout\u weight属性。