在线性布局中将按钮居中
Centering a button in a linear layout
在 LinearLayout 上使用重力使按钮正确居中:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/new"
android:paddingLeft="40dp"
android:paddingRight="40dp"/>
</LinearLayout>
但是在 Button 上使用 layout_gravity=center 只会使按钮水平居中而不是垂直居中,为什么?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:layout_gravity="center"/>
</LinearLayout>
我认为 layout_gravity
可以使按钮在 LinearLayout 中居中。
有帮助的文章:LinearLayout gravity and layout_gravity explained
检查下面的简单代码。它会给你一个按钮 center horizontal of LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#f00"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button Center Hozizontal" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#00f"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button Center Vertical" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0ff"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button Center Vertical/ Horizontal" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
希望对您有所帮助。
gravity
定义在ViewGroup
中(只有ViewGroup
及其子类有此属性)。而layout_gravity
定义在View
.
layout_gravity
更改视图的引力,到目前为止一切顺利。但是,如果您将 gravity
应用于 ViewGroup
,例如 LinearLayout
,视图 内部 视图组会改变引力。
也就是说,设置ViewGroup
的gravity
等同于设置layout_gravity
到它的所有视图!
粗体字肯定回答了你的问题。
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/b1"
android:text="COLOR"/>
</LinearLayout>
在 LinearLayout 上使用重力使按钮正确居中:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/new"
android:paddingLeft="40dp"
android:paddingRight="40dp"/>
</LinearLayout>
但是在 Button 上使用 layout_gravity=center 只会使按钮水平居中而不是垂直居中,为什么?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:layout_gravity="center"/>
</LinearLayout>
我认为 layout_gravity
可以使按钮在 LinearLayout 中居中。
有帮助的文章:LinearLayout gravity and layout_gravity explained
检查下面的简单代码。它会给你一个按钮 center horizontal of LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#f00"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button Center Hozizontal" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#00f"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button Center Vertical" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0ff"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button Center Vertical/ Horizontal" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
希望对您有所帮助。
gravity
定义在ViewGroup
中(只有ViewGroup
及其子类有此属性)。而layout_gravity
定义在View
.
layout_gravity
更改视图的引力,到目前为止一切顺利。但是,如果您将 gravity
应用于 ViewGroup
,例如 LinearLayout
,视图 内部 视图组会改变引力。
也就是说,设置ViewGroup
的gravity
等同于设置layout_gravity
到它的所有视图!
粗体字肯定回答了你的问题。
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/b1"
android:text="COLOR"/>
</LinearLayout>