我有一个嵌入片段的 activity_edit_profile.xml 布局,但EditText提示会一直显示。当EditText字段处于焦点或插入文本时,如何摆脱提示?
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/DrawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.getbase.floatingactionbutton.sample.EditProfileActivity"
tools:ignore="MergeRootFrame">
<include layout="@layout/fragment_edit_profile"/>
</android.support.design.widget.CoordinatorLayout>
在 fragment_edit_profile.xml
中<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.getbase.floatingactionbutton.sample.EditProfileActivity$PlaceholderFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:theme="@style/TextLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="First Name"
android:inputType="textCapWords"
android:nextFocusDown="@+id/register_input_lastname"
/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:theme="@style/TextLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/register_input_lastname"
android:hint="Last Name"
android:inputType="textCapWords"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:theme="@style/TextLabel">
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:theme="@style/TextLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="2"
android:theme="@style/TextLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Country Code"
android:inputType="number"
android:nextFocusDown="@+id/mobile_number"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:theme="@style/TextLabel">
<EditText
android:id="@+id/mobile_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Mobile"
android:inputType="phone"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
</LinearLayout>
editText提示与textInput一起显示和重叠。
[编辑]
这里是TextLabel样式:
<style name="TextLabel" parent="@android:style/TextAppearance">
<item name="android:textColorHint">@color/half_black</item>
<item name="android:textSize">14dp</item>
<item name="colorAccent">@color/ColorPrimary</item>
<item name="colorControlActivated">@color/ColorPrimary</item>
</style>
答案 0 :(得分:0)
您可以将focusChangeListener附加到EditText
字段。
我们以First Name
为例。为其分配ID firstName
。现在,当它进入焦点时,将提示文本设置为空字符串。当它失去焦点时,将提示文本更改回First Name
:
EditText firstName = (EditText)findViewById(R.id.firstName);
firstName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
firstName.setHint("");
}
else {
firstName.setHint("First Name");
}
}
});
答案 1 :(得分:0)
可能问题在于您为TextInputLayout
所设置的主题设置的主题应该是什么样的 -
<style name="AppTheme.EditText">
<item name="colorPrimary">#FF4081</item>
<item name="colorPrimaryDark">#3F51B5</item>
<item name="colorAccent">#303F9F</item>
</style>
答案 2 :(得分:0)
删除TextInputLayout小部件。仅添加EditText。
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="First Name"
android:inputType="textCapWords"
android:nextFocusDown="@+id/register_input_lastname"
/>