浮动EditText的提示文本可以更改吗?

4

是否有可能根据文本是浮动在EditText上还是在内部而更改浮动提示的文本?

例如,当字段为空时,我想看到文本“您的姓名”,当提示浮动时,我想看到文本“姓名”。

目前它的样子是这样的:

<android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                >

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="Your name"
                    android:textColorHint="@color/dark_grey"
                    android:textColor="@color/dark_grey"
                    android:background="@drawable/edittext_bg"
                    >
                    <requestFocus/>
                </EditText>

</android.support.design.widget.TextInputLayout>

你可以通过编程实现它,监听输入事件并根据文本长度更改提示。 - galvan
2个回答

3

通过使用TextInputLayout和EditText的onFocusChangeListener来完成。

textInputLayoutEmail.setHint("Enter your Email id");

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                textInputLayoutEmail.setHint("Email");
            }
        });

如何在xml文件中移除EditText的提示信息

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="@color/dark_grey"
        android:textColor="@color/dark_grey"
        android:background="@drawable/edittext_bg">

        <requestFocus />
    </EditText>

</android.support.design.widget.TextInputLayout>

0
EditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub              
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub      
        }
        @Override
        public void afterTextChanged(Editable s) {
            EditText.setHint("Name");    
        }
    });

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