我有三个按钮需要位于屏幕底部的一行中。下面是activity xml中的代码。为了使三个按钮占用空间,我将每个按钮包裹在LinearLayout中,并将布局android:layout_weight
设置为1并将android:layout_gravity
设置为居中。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="90px"
android:background="#88104502"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:id="@+id/goBack"
android:layout_width="70px"
android:layout_height="80px"
android:gravity="center"
android:background="@drawable/back"
android:onClick="toHomePage" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:id="@+id/findPlant"
android:layout_width="70px"
android:layout_height="80px"
android:gravity="center"
android:background="@drawable/flowr"
android:onClick="toImagePage" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_gravity="center"
android:layout_weight="1">
<Button
android:id="@+id/plantList"
android:layout_width="70px"
android:layout_height="80px"
android:gravity="center"
android:background="@drawable/list" />
</LinearLayout>
</LinearLayout>
但按钮不在LinearLayout的中心。以下是截图:
您可以看到每个按钮都位于LinearLayout的左侧。如何使它们居中?
答案 0 :(得分:1)
如果你想要一个带有图像的按钮,你可以使用ImageButton而不是Button,你可以尝试这样做,而使用嵌套布局你可以直接给ImageButton加权。
如果您想设置按钮样式,可以使用AppCompatImageButton
,因为您可以使用app:backgroundTint
来更改背景。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="90px"
android:background="#88104502"
android:weightSum="3"
android:orientation="horizontal">
<ImageButton
android:id="@+id/goBack"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:onClick="toHomePage"
android:src="@drawable/ic_action_name"/>
<ImageButton
android:id="@+id/findPlant"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:onClick="toImagePage"
android:src="@drawable/ic_action_name"/>
<ImageButton
android:id="@+id/plantList"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:onClick="toImagePage"
android:src="@drawable/ic_action_name"/>
</LinearLayout>
答案 1 :(得分:0)
您可以创建一个空视图作为填充。这样,即使图标宽度不同,间距也始终相同。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="90px"
android:background="#88104502"
android:orientation="horizontal">
<View
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="0dp"/>
<Button
android:id="@+id/button1"
android:layout_width="70px"
android:layout_height="80px"
android:background="@drawable/list" />
<View
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="0dp"/>
<Button
android:id="@+id/button2"
android:layout_width="70px"
android:layout_height="80px"
android:background="@drawable/list" />
<View
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="0dp"/>
<Button
android:id="@+id/button3"
android:layout_width="70px"
android:layout_height="80px"
android:background="@drawable/list" />
<View
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="0dp"/>
</LinearLayout>
答案 2 :(得分:0)
试试这个。我使用你的代码只给重力线性布局。如果你不想使用这么多的LinearLayout,只使用一个主要的LinearLayout并给予3个按钮相同的权重。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="90px"
android:background="#88104502"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="horizontal"
android:gravity="center"
android:layout_weight="1">
<Button
android:id="@+id/goBack"
android:layout_width="70px"
android:layout_height="80px"
android:gravity="center"
android:background="@mipmap/ic_launcher"
android:onClick="toHomePage" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:id="@+id/findPlant"
android:layout_width="70px"
android:layout_height="80px"
android:gravity="center"
android:background="@mipmap/ic_launcher"
android:onClick="toImagePage" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="1">
<Button
android:id="@+id/plantList"
android:layout_width="70px"
android:layout_height="80px"
android:background="@mipmap/ic_launcher" />
</LinearLayout>
答案 3 :(得分:0)
使用gravity而不是layout_gravity。