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


Answers:


80

为了使提示文本能够与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" />

感谢您的发布,欢迎您使用StackOverflow!是的,ellipsize =“ start”确实会影响这一点。不知道为什么。没有它,提示就不会显示给我。
代码Droid 2012年

4
我认为我在这里太迟了,但是今天我已经看到了这个答案,并重申这里不需要android:ellipsize =“ start”来创建提示中心,AFAIK。看我的答案。可能也是有用的。
Robi Kumar Tomar 2014年

1
如其他答案所述,是android:gravity =“ center”(或类似变体)将文本居中,而不是ellipsize。
hBrent 2015年

为什么接受此答案?我想只gravity重要。
CoolMind

这可能会在较旧的Android系统中错误地起作用,但现在不起作用。
指针为空,

38

实际上,android:gravity="center_horizontal"会创建您想要的居中效果。同样,您可以android:gravity="start"将提示文本放在EditText视图的开头,依此类推。


2
谢谢。我尝试了android:ellipsize="start",没有任何变化。添加android:gravity="center_horizontal"就可以了。再次感谢。
诺亚·赫伦



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



4

不幸的是,当布局方向为RTL时,没有一个答案能帮助我对齐以LTR语言编写的提示。我需要一种翻译应用程序中的这种布局,以使覆盖图标不会干扰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);
        }
. . .
}

技巧是在从右到左的标记之前添加一个从左到右的字符串。似乎可行,但是没有人知道更优雅的解决方案吗?


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

android:gravity =“ center”

是什么使包含提示文本的文本居中对齐





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>

0

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

android:layout_gravity="center"

pd:我过去常常 android:background="@android:color/transparent"EditText提示中隐藏难看的下划线

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.