将线性布局中的按钮居中

the*_*ase 326 xml layout android

我使用线性布局来显示非常轻的初始屏幕.它有一个按钮,应该在屏幕中水平和垂直居中.但无论我尝试做什么,按钮都会在顶部对齐中心.我已经包含了下面的XML,有人能指出我正确的方向吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ImageButton android:id="@+id/btnFindMe" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:background="@drawable/findme"></ImageButton>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

lan*_*a90 426

使用LinearLayout进行中心:

<LinearLayout
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/btnFindMe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/findme" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

  • 与RelativeLayout相比,LinearLayout更简单,重量更轻,应该更快一些. (10认同)
  • 我使用的是layout_gravity而不是gravity.改为android:gravity ="center"为我修好了.菜鸟的错误. (3认同)

Dav*_*ebb 364

如果您想将项目置于屏幕中间,请不要使用a,LinearLayout因为它们用于连续显示多个项目.

RelativeLayout改用.

所以替换:

android:layout_gravity="center_vertical|center_horizontal"
Run Code Online (Sandbox Code Playgroud)

相关RelativeLayout选项:

android:layout_centerInParent="true"
Run Code Online (Sandbox Code Playgroud)

所以你的布局文件将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ImageButton android:id="@+id/btnFindMe" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/findme"></ImageButton>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

  • 在某些情况下,您需要使用LinearLayout和中心内容.这不应该是公认的答案.建议尽可能使用RelativeLayout,如果不是_how_以LinearLayout为中心. (34认同)

rui*_*rui 41

您是否尝试android:gravity="center_vertical|center_horizontal"在布局中定义并android:layout_weight="1"在图像中进行设置?

  • android:gravity对于我在水平LinearLayout中不起作用,但android:layout_gravity确实如此. (4认同)
  • 我喜欢这个让我保留mi LinearLayout的选项!(我没有在按钮中设置`android:weight ="1"`来使它居中.) (2认同)

小智 35

与线性布局一起使用的常用方法是在图像按钮上设置属性

android:layout_gravity="center"
Run Code Online (Sandbox Code Playgroud)

您可以选择是在线性布局中左对齐,居中对齐还是右对齐每个对象.注意上面的行与之完全相同

android:layout_gravity="center_vertical|center_horizontal"
Run Code Online (Sandbox Code Playgroud)

  • 在父布局中添加android:gravity ="center"属性 - 它包含您的按钮(子组件). (4认同)

小智 10

如果你使用LinearLayout你可以添加重心:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center">
            <Button
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            />
</LinearLayout>`
Run Code Online (Sandbox Code Playgroud)


Tan*_*hoo 9

加上这个

android:gravity="center"
Run Code Online (Sandbox Code Playgroud)

在LinearLayout中.

  • 应该是`android:gravity="center"` (2认同)

Jav*_*ier 7

这很容易

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:visibility="visible" 
        android:gravity="center"
        android:orientation="vertical" >

        <ProgressBar
            android:id="@+id/pbEndTrip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:text="Gettings" />
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)


Ami*_*mar 5

你可以使用RelativeLayout.


小智 5

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ImageButton android:id="@+id/btnFindMe" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"
        android:layout_gravity = "center"
        android:background="@drawable/findme">
    </ImageButton>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

上面的代码将起作用.