You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:35:54