我希望我的应用程序能够在不同的时间显示不同的提示文本,因此我需要根据需要编程设置提示文本,如下所示。
editText.setHint("Hint 1");
但问题在于当我开始输入时,提示文本就会消失。我想每次都显示这个提示。如果我在 XML 中设置了提示,那么在输入时它将不会消失,但是在我的情况下如何实现呢?
我希望我的应用程序能够在不同的时间显示不同的提示文本,因此我需要根据需要编程设置提示文本,如下所示。
editText.setHint("Hint 1");
但问题在于当我开始输入时,提示文本就会消失。我想每次都显示这个提示。如果我在 XML 中设置了提示,那么在输入时它将不会消失,但是在我的情况下如何实现呢?
<RelativeLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some text"
android:layout_alignParentLeft="true"
android:id="@+id/editText1"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/text_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="yourHint"
android:textSize="14sp"
android:layout_marginRight="10dp"
android:textColor="@color/customColor"
/>
</RelativeLayout>
很抱歉,您期望的不可能实现。因为我们必须知道用户在EditText中输入了什么内容。 近年来,类似https://github.com/hardik-trivedi/FloatingLabel这种提示方式更加流行,您可以尝试使用以上链接。
TextInputLayout
为 EditText
提供了强大的 Material 设计特性。其中主要特点是浮动提示。请参阅此处的文档 https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html。
<android.support.design.widget.TextInputLayout
android:theme="@style/TextLabel"
android:id="@+id/input_layout_username"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/username_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:hint="Email Address"
android:inputType="textEmailAddress"
android:translationY="10dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:textSize="@dimen/font_13"/>
</android.support.design.widget.TextInputLayout>
EditText. setHint ("Hint 1");
最好的方法是使用TextInputLayout。
https://www.bignerdranch.com/blog/becoming-material-with-android-design-support-library/
<!--EMAIL-->
<android.support.design.widget.TextInputLayout
android:id="@+id/email_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextLabel">
<EditText
android:id="@+id/etUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_screen_email_hint"
android:imeOptions="actionNext"
android:inputType="textEmailAddress"
android:maxLines="1"
android:nextFocusDown="@+id/etPassword"
android:singleLine="true"
android:textColor="@android:color/white"
android:textColorHighlight="@android:color/white"
android:textColorHint="@android:color/white" />
</android.support.design.widget.TextInputLayout>
别忘了将这行代码添加到你的Gradle文件中
compile 'com.android.support:design:23.4.0'
TextInputLayout
。在你的布局xml文件中,将你的EditText
放在TextInputLayout
里面。 - SripadRaj