如何在Android布局中保持按钮到位?

时间:2014-02-13 04:22:19

标签: android android-layout

我在屏幕按钮上有四个按钮,我希望它们之间的间隙尽可能相等。

enter image description here 这就是我放置按钮的方式。

enter image description here 这是我在模拟器和设备上运行它们时的显示方式。

这是按钮的xml代码。

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <ImageView
            android:id="@+id/img_base"
            android:layout_width="fill_parent"
            android:layout_height="58dip"
            android:layout_alignParentBottom="true"
            android:background="@drawable/base" />

        <Button
            android:id="@+id/btn_gotoLocation"
            android:layout_width="43dip"
            android:layout_height="50dip"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="16dp"
            android:background="@drawable/location" />

        <Button
            android:id="@+id/calculate"
            android:layout_width="43dip"
            android:layout_height="50dip"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginRight="23dp"
            android:background="@drawable/cal" />

        <Button
            android:id="@+id/btn_info"
            android:layout_width="43dip"
            android:layout_height="50dip"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="25dp"
            android:layout_toLeftOf="@+id/calculate"
            android:background="@drawable/info" />

        <ImageView
            android:id="@+id/add_place"
            android:layout_width="50dip"
            android:layout_height="60dip"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="36dp"
            android:layout_toLeftOf="@+id/btn_info"
            android:src="@drawable/add_place" />

    </RelativeLayout>

如何解决此问题?

5 个答案:

答案 0 :(得分:1)

请使用android:layout:weight

更新

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="55dp"
    android:gravity="center"
    android:layout_weight="1" >

    <ImageView
        android:id="@+id/img_base"
        android:layout_width="43dip"
        android:layout_height="50dip"
        android:background="@drawable/ic_launcher" />
</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="55dp"
    android:gravity="center"
    android:layout_weight="1" >

    <Button
        android:id="@+id/btn_gotoLocation"
        android:layout_width="43dip"
        android:layout_height="50dip"
        android:background="@drawable/ic_launcher" />
</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="55dp"
    android:gravity="center"
    android:layout_weight="1" >

    <Button
        android:id="@+id/calculate"
        android:layout_width="43dip"
        android:layout_height="50dip"
        android:background="@drawable/ic_launcher" />
</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="55dp"
    android:gravity="center"
    android:layout_weight="1" >

    <Button
        android:id="@+id/btn_info"
        android:layout_width="43dip"
        android:layout_height="50dip"
        android:background="@drawable/ic_launcher" />
</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="55dp"
    android:gravity="center"
    android:layout_weight="1" >

    <ImageView
        android:id="@+id/add_place"
        android:layout_width="43dip"
        android:layout_height="50dip"
        android:background="@drawable/ic_launcher" />
</LinearLayout>

答案 1 :(得分:1)

您可以添加线性布局,并将项目的权重设置为1 ...

<LinearLayout android:weight="1">
     <Button android:layout_weight="1"/>
     <Button android:layout_weight="1"/>
     <Button android:layout_weight="1"/>
     <Button android:layout_weight="1"/>
</LinearLayout>

答案 2 :(得分:1)

你可以用这个......

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:gravity="bottom"
 android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:gravity="bottom"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/img_base"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="@drawable/base" />

    <Button
        android:id="@+id/btn_gotoLocation"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="@drawable/location" />

    <Button
        android:id="@+id/calculate"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="@drawable/cal" />

    <Button
        android:id="@+id/btn_info"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="@drawable/info" />

    <ImageView
        android:id="@+id/add_place"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="@drawable/add_place" />
 </LinearLayout>

</LinearLayout>

答案 3 :(得分:0)

您应该为所有按钮提供相同的android:layout_marginLeft值。

答案 4 :(得分:0)

好的,你可以试试这个

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_gravity:"center_horizontal|bottom" >

    <ImageView
        android:id="@+id/img_base"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/base" />

    <Button
        android:id="@+id/btn_gotoLocation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:background="@drawable/location" />

    <Button
        android:id="@+id/calculate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:background="@drawable/cal" />

    <Button
        android:id="@+id/btn_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toLeftOf="@+id/calculate"
        android:background="@drawable/info" />

    <ImageView
        android:id="@+id/add_place"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toLeftOf="@+id/btn_info"
        android:src="@drawable/add_place" />

</RelativeLayout>

只是忽略边距,它应该很好。

希望它有效。