Android EditText提示

Byt*_*ode 44 android

我已经设置了一个提示EditText,目前提示可见性已经消失.当用户开始输入时,我想删除提示文本,当光标在可见的时候EditText,而不是在用户开始输入时.我怎样才能做到这一点?

<EditText 
android:paddingLeft="10dp"
android:background="@drawable/edittextbg"
android:layout_marginLeft="4dp"
android:layout_marginTop="7dp"
android:gravity="left"
android:id="@+id/Photo_Comments" 
android:layout_width="150dip" 
android:maxLines="1"
android:hint="Write Caption"
android:maxLength="50"
android:singleLine="true"
android:maxWidth="100dip"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

Sun*_*pta 55

您可以使用选择器的概念.onFocus删除提示.

android:hint="Email"
Run Code Online (Sandbox Code Playgroud)

因此,当TextView有焦点或有用户输入(即非空)时,提示将不会显示.

  • 不幸的是,这是不正确的.<selector>元素只能用于drawables和colors; 不是字符串. (3认同)
  • 你可以扩展这个,我找不到选择器标签的正确文档以及如何做到这一点 (3认同)

Ama*_*lam 30

我不知道这样做的直接方式是否可用,但你肯定通过代码有一个解决方法:监听onFocus事件EditText,并且一旦获得焦点,将提示设置为什么,如editText.setHint(""):

这可能不是你必须要做的,但它可能是这样的 -

myEditText.setOnFocusListener(new OnFocusListener(){
  public void onFocus(){
    myEditText.setHint("");
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 这不是必需的,因为EditText上的提示的默认行为在焦点而非空时将消失. (4认同)
  • 这不是最好的方法,您可以仅使用应用于 textColorHint 的选择器。检查下面我的答案。 (2认同)

agl*_*our 20

要完成Sunit的答案,您可以使用选择器,而不是文本字符串,而是textColorHint.您必须在editText上添加此属性:

android:textColorHint="@color/text_hint_selector"
Run Code Online (Sandbox Code Playgroud)

你的text_hint_selector应该是:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:color="@android:color/transparent" />
    <item android:color="@color/hint_color" />
</selector>
Run Code Online (Sandbox Code Playgroud)

  • @behelit textColorHint接收颜色,而不是drawable,因此选择器必须位于颜色文件夹中,而不是drawable. (2认同)