EditText提示继续显示

时间:2016-01-29 19:09:21

标签: android android-edittext android-textinputlayout

我有一个嵌入片段的 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一起显示和重叠。

enter image description here

[编辑]

这里是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>

3 个答案:

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