74

我需要EditText在 Android 中将提示文本居中。我该怎么做呢?

4

16 回答 16

83

为了使提示文本居中与 EditText 一起使用,您必须确保定义了 android:ellipsize="start"。我不知道为什么这使它起作用,但确实如此。

从个人代码中提取的示例:

<EditText
    android:id="@+id/player2Name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:ellipsize="start"
    android:gravity="center_horizontal"
    android:hint="@string/player2_name"
    android:inputType="textCapWords|textPersonName"
    android:singleLine="true" />
于 2012-07-03T01:08:21.103 回答
38

实际上,android:gravity="center_horizontal"创建您正在寻找的居中效果。同样,您可以使用android:gravity="start"在 EditText 视图的开头放置提示文本,等等。

于 2014-05-28T16:42:22.693 回答
35

使用这个 xml 属性:

机器人:重力=“中心”

于 2012-07-03T05:33:12.787 回答
11

使用属性

android:gravity="center"
于 2014-08-04T09:27:52.737 回答
8

我在每种情况下都使用了这段代码,它可以完美地工作,而无需使用android:ellipsize="start"在中心进行提示。

  <EditText
    android:id="@+id/player2Name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:hint="robi"
    android:inputType="text" />
于 2014-11-13T10:35:39.080 回答
5

我认为答案应该是:

android:textAlignment="center"
于 2016-09-04T13:50:57.727 回答
5

textAlignment 为我工作。

textAlignment="center"
于 2017-02-27T11:58:28.030 回答
4

不幸的是,这两个答案都没有帮助我对齐提示,用 LTR 语言编写,而布局方向是 RTL。我需要在一种翻译应用程序中进行这样的布局,以使覆盖图标不会干扰 RTL 文本。但是这个技巧不适用于提示,因为还没有任何文本(图标出现在提示上方),我来到了以下布局问题的 java 解决方案:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
. . .
        if (isRightToLeft()){
            EditText guess = (EditText) rootView.findViewById(android.R.id.text1);
            CharSequence hint = "\u200F" + guess.getHint();
            guess.setHint(hint);
        }
. . .
}

诀窍是在从右到左的标记中添加从左到右的字符串。它似乎有效,但有人知道更优雅的解决方案吗?

于 2015-05-09T12:20:41.580 回答
4
<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp">

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:hint="ENTER PIN"
            android:inputType="numberPassword" />
    </android.support.design.widget.TextInputLayout>

注意:在标签 TextInputEditText 中,属性

机器人:重力=“中心”

是什么使得在中心对齐文本(包括提示文本)的处理

于 2018-05-08T10:22:38.713 回答
4

使用这个:android:gravity="center"

于 2018-05-17T07:16:54.873 回答
4

我使用它并为我工作

android:gravity="Left|center_vertical"
于 2018-08-29T11:32:14.660 回答
3

在 EditText 中使用 android:textAlignment="center",它对我有用

于 2018-02-01T06:52:50.193 回答
1

这对我有用:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/nombreslayoutinput">
    <EditText
        android:id="@+id/nombreslayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/nombres"
        android:layout_centerInParent="true"
        android:gravity="center|center_vertical"
        android:ellipsize="start"
        android:inputType="textCapWords|textPersonName"

        />
</android.support.design.widget.TextInputLayout>
于 2017-07-21T20:52:49.317 回答
1

正确答案是

android:gravity="center_horizontal
于 2021-02-24T15:27:26.063 回答
1

暗示重力

android:textAlignment="center"

文字重力

android:gravity="left"
于 2021-10-04T07:21:06.320 回答
0

我的问题是EditText不够大,无法完全适合其父级(FrameLayout在我的情况下),因此仅使用android:gravity="center"(center_vertical、horizo​​ntal、start 或其他) 只会适合它在 中EditText,而不是在其父级中,所以我必须EditText使用以下方法将其父级居中:

android:layout_gravity="center"

pd:我曾经 android:background="@android:color/transparent"EditText提示中隐藏丑陋的下划线

于 2019-03-08T17:20:36.597 回答