Android布局问题:如何将两个EditText置于屏幕中央?当前居左未居中
解决Android中两个EditText控件屏幕居中的问题
嘿,我来帮你搞定这个EditText居中的问题!你的现有布局里,LinearLayout只设置了android:layout_gravity="center_vertical",这只会让它在垂直方向居中,但水平方向还是靠左的。下面给你几种简单有效的调整方案:
方案一:修改现有LinearLayout属性(最快)
只需要给你的外层LinearLayout添加android:gravity="center"属性,就能让内部的两个EditText水平居中。结合原来的layout_gravity="center_vertical",整个控件组就会在屏幕的垂直+水平中心位置了。修改后的完整代码如下:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center" <!-- 新增这行,控制内部子控件水平居中 --> android:orientation="horizontal"> <EditText android:id="@+id/edit_code_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="0" android:inputType="number" android:maxLength="1" android:padding="10dp" android:textSize="20sp" /> <EditText android:id="@+id/edit_code_2" android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="0" android:inputType="number" android:maxLength="1" android:padding="10dp" android:textSize="20sp" /> </LinearLayout>
这里要区分两个容易混淆的属性:
android:gravity:控制当前控件内部子元素的对齐方式android:layout_gravity:控制当前控件自身在父布局中的位置
因为你的LinearLayout宽度是match_parent(占满水平空间),所以设置gravity="center"就能让里面的EditText水平居中。
方案二:使用ConstraintLayout(推荐现代布局方式)
如果你的项目已经在使用ConstraintLayout(现在Android开发更推荐的布局),可以通过约束让整个LinearLayout完全居中,这种方式在复杂布局里更灵活可控:
<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"> <EditText android:id="@+id/edit_code_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="0" android:inputType="number" android:maxLength="1" android:padding="10dp" android:textSize="20sp" /> <EditText android:id="@+id/edit_code_2" android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="0" android:inputType="number" android:maxLength="1" android:padding="10dp" android:textSize="20sp" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
这里把LinearLayout的宽度设为wrap_content,然后通过四个约束让它在父布局的水平和垂直方向都居中,内部的EditText自然就跟着居中了。
方案三:如果父布局是RelativeLayout
如果你的外层布局是RelativeLayout,只需要给LinearLayout添加android:layout_centerInParent="true"属性即可:
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_centerInParent="true"> <!-- 两个EditText代码不变 --> </LinearLayout> </RelativeLayout>
内容的提问来源于stack exchange,提问作者R.Roshan
相关产品推荐
相关产品推荐

