如何在 Android 中的 EditText 中居中显示提示文本?

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

94411 次浏览

为了使提示文本居中以便与 EditText 一起工作,您必须确保定义了 android: 椭圆大小 = “ 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" />

使用 xml 属性:

机器人: 重力 = “中心”

实际上,android:gravity="center_horizontal"创建了您正在寻找的居中效果。类似地,可以使用 android:gravity="start"将提示文本放在 EditText 视图的开头,依此类推。

使用属性

android:gravity="center"

我在每种情况下都使用了这段代码,而且它在不使用 Android: 椭圆大小 = “ 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" />

不幸的是,这两个答案都没有帮助我调整用 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);
}
. . .
}

这个技巧的右至左符号是预先准备一个从左到右的字符串。看起来很有效,但有人知道更好的解决方案吗?

我认为答案应该是:

android:textAlignment="center"

文本对齐对我有用。

textAlignment="center"

这对我很有效:

<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>

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

<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 中,属性

机器人: 重力 = “中心”

是什么使中心的文本对齐,包括提示文本的处理

用这个机器人: 重力 = “中心”

我用这个为自己工作

android:gravity="Left|center_vertical"

我的问题是 EditText不够大,不能完全适合它的父代(我的情况是 FrameLayout) ,所以只使用 android:gravity="center"(居中垂直,水平,开始,或任何东西)只能适合它在 EditText内,而不是在它的父代,所以我必须在它的父代中居中使用:

android:layout_gravity="center"

Pd: 我使用 android:background="@android:color/transparent"来隐藏 EditText提示中丑陋的下划线

正确答案是

android:gravity="center_horizontal

暗示重力

android:textAlignment="center"

文本引力

android:gravity="left"