我正在编写我的第一个完整的Android应用程序,我希望将线性布局居中,以便布局本身居中,而不仅仅是布局内的内容。我已经看到android:layout_gravity
用于执行此操作的旧帖子,但是当我将其输入到我的活动的XML there are no suggestions和nothing happens when fully entered中时。
我不应该使用线性布局来实现这一目标吗?我应该制作它的大小match_parent
并限制其所有孩子的大小吗?我对布局的想法是约束线性布局的大小,使其居中,并使其所有子级的水平尺寸为match_parent
。
以下是我的活动的XML供参考:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.frc5113.combustiblescouting.MainActivity">
<LinearLayout
android:layout_width="140dp"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Team Number" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Color" />
</LinearLayout>
答案 0 :(得分:1)
您的根布局是ConstraintLayout
。我认为这不支持属性layout_gravity
。您应该使用LinearLayout
或使用相对于根视图的约束here。
答案 1 :(得分:0)
试试这个,它会使你的容器水平和放大垂直中心同时:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.frc5113.combustiblescouting.MainActivity"
android:orientation="vertical"
android:gravity="center">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Team Number" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Color" />
</LinearLayout>
答案 2 :(得分:0)
在LinearLayout上使用android:gravity="center"
会将其孩子置于其中心。
会有android:layout_gravity
属性告诉家长这个孩子想要如何布置。但这需要容器的LayoutParams支持(例如FrameLayout,LinearLayout ......)
但是Constraintlayout并不支持这种儿童引力。
在这里,您需要在子项上设置约束(在您的情况下为LinearLayout),以便正确放置它。
因此,如果你想让LinearLayout居中(这会以某种方式过时,因为你可以将它的子项直接放在ConstraintLayout中) 你可以像下面那样实现这个目标:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="140dp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<!-- content -->
</LinearLayout>
</android.support.constraint.ConstraintLayout>