如何均衡按钮之间的空格?

时间:2012-02-29 08:12:48

标签: android android-layout

我需要均衡四个按钮之间的空格。有什么办法可以做到吗?问题是第一个和最后一个按钮需要靠近边缘,剩下的空间应该等分为剩余的两个按钮和三个空格。

布局/ main.xml中:

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

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

        <Button
            android:id="@+id/setupButtonA1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_arrow_up"
            android:enabled="true" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_weight="1">

        <Button
            android:id="@+id/setupButtonA2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_arrow_down"
            android:layout_weight="0.5"
            android:enabled="true" />

        <Button
            android:id="@+id/setupButtonB1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_arrow_up"
            android:layout_weight="0.5"
            android:enabled="false" />
    </LinearLayout>

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

        <Button
            android:id="@+id/setupButtonB2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_arrow_down"
            android:enabled="false" />
    </LinearLayout>
</LinearLayout>

感谢您的所有答案,正确的解决方案是:

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

    <Button
        android:id="@+id/setupButtonA1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_arrow_up"
        android:enabled="true" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <Button
        android:id="@+id/setupButtonA2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_arrow_down"
        android:enabled="true" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <Button
        android:id="@+id/setupButtonB1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_arrow_up"
        android:enabled="false" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <Button
        android:id="@+id/setupButtonB2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_arrow_down"
        android:enabled="false" />
</LinearLayout>

5 个答案:

答案 0 :(得分:4)

你可以使用下面的代码,我已经在linearlayout的所有控件中插入了权重1的空白视图。

 <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >
<Button
            android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button" android:layout_weight="1"/>
 <View
            android:id="@+id/v2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <Button
            android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button" android:layout_weight="1"/>
 <View
            android:id="@+id/v2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
        <Button
            android:id="@+id/button2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button" android:layout_weight="1"/>
 <View
            android:id="@+id/v2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>
            <Button
            android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button" android:layout_weight="1"/>
    </LinearLayout>

答案 1 :(得分:0)

尝试android:layout_weight="0"

答案 2 :(得分:0)

使用android:weightSum =“4”这应该在布局中定义,这在你的代码中是缺失的。 并为每个按钮定义android:layout_weight =“1”

 <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"  
         android:weightSum="4"> /////------ i made changes here

        <Button 
            android:id="@+id/setupButtonA2" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:background="@drawable/button_arrow_down" 
            android:layout_weight="1" 
            android:enabled="true" /> 

        <Button 
            android:id="@+id/setupButtonB1" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:background="@drawable/button_arrow_up" 
            android:layout_weight="1" 
            android:enabled="false" /> 
       <Button 
            android:id="@+id/setupButtonB1" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:background="@drawable/button_arrow_up" 
            android:layout_weight="0.5" 
            android:enabled="false" /> 

       <Button 
            android:id="@+id/setupButtonB1" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:background="@drawable/button_arrow_up" 
            android:layout_weight="0.5" 
            android:enabled="false" /> 

    </LinearLayout> 

答案 3 :(得分:0)

中尝试android:layout_marginLeft="28dp"
android:id="@+id/setupButtonA2"  and       
     android:id="@+id/setupButtonB1"

在布局适合时更改dp值

答案 4 :(得分:0)

我不会像其他人在这里那样编写示例代码,而是我会解释我是如何做的。

整个按钮条(width fill_parent,height wrap_content)将是RelativeLayout。 添加第一个按钮,设置layout_alignParentLeft = true 添加下一个按钮,设置layout_alignParentRight = true(这将是条带上的最后一个按钮) 添加LinearLayout(fill_parent,wrap_content),toLeftOf = lastButton,toRightOf = firstButton。这应该放在两个按钮的中间。将其方向设置为水平。 在此LinearLayout中,添加两个新的LinearLayouts (layout_width =“0dip”,layout_height = wrap_content)。设置layout_weight = 1。设置重力=中心。 在这两个LinearLayouts中,放置剩下的按钮。

无需为任何布局设置weightSum。所有按钮都是(wrap_content,wrap_content),或者你想要它们的大小。