安卓 EditText 提示文本未显示

10

我遇到的最奇怪的事情似乎就是这个了。

以下是布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<EditText        
    android:id="@+id/GuessAppEditText"
    android:lines="1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center_horizontal"        
    android:inputType="textCapWords"
    android:hint="@string/Hint" />

</RelativeLayout>
EditText 的提示信息未显示。
如果我移除 android:gravity="center_horizontal" 或者 android:inputType="textCapWords" 中的任意一个,提示信息就能显示出来了。
我完全不知道 gravitytextCapWordshint 有什么关系。这是另一个 Android 的 Bug 吗?还是我做错了什么?如果是前者,有什么解决方法吗?我希望我的文本居中对齐且首字母大写,同时还需要显示提示信息。或许我对 Android 要求太高了?

1
请参考相关问题https://dev59.com/5VDTa4cB1Zd3GeqPHkGh#3643494。 - jnthnjns
你是否尝试过通过编程方式移除提示并设置它,以查看是否可解决问题? - jnthnjns
android:gravity="center_horizontal" 会导致问题... - Saurabh Verma
4个回答

23

只需添加一行代码,即 android:ellipsize="start" 即可实现功能。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <EditText
        android:id="@+id/GuessAppEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:ellipsize="start"
        android:gravity="center_horizontal"
        android:hint="hint"
        android:inputType="textCapWords"
        android:lines="1" />

</RelativeLayout>

5
很可能原来的接受答案已经不适用于最新的安卓版本,通过设置提示颜色可以显示提示内容:
android:textColorHint="@android:color/darker_gray"

希望这能帮助其他人,已在Android 5+上测试过。

1

到了2021年,似乎这仍然是一个问题,所以对于任何试图使用EditText但在设计器中看不到提示的人来说,你可以添加tools:background="@android:color/transparent"或为背景分配任何颜色,提示将会出现。


0

这似乎是一个错误,如此处所述。看起来那个线程中有一些人发布了你可以尝试的解决方法或解决方案。你是否尝试过删除提示并以编程方式设置它,以查看是否可以解决问题?

onCreate()之前声明此内容。

EditText guessAppEt;

而这是在onCreate()

guessAppEt = (EditText)findViewById(R.id.GuessAppEditText);
guessAppEt.setHint("Your hint here");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接