在TextInputLayout中连续显示错误消息

时间:2016-02-29 15:36:33

标签: android material-design

此代码位于布局文件中。

Parallel

这是Java代码。

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/textInputLayoutMobile"
    >

    <EditText
        android:inputType="number"
        android:id="@+id/mobileNumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLength="10"
        android:hint="Mobile Number" />

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

当前行为:当我们点击该字段时,会显示“此字段是必填字段”。此外,当我们开始在字段中输入时,此消息不会消失。

所需行为:当我们第一次点击时,它不应显示“此字段是必需的”。当我们在触摸此字段并且未输入任何数据后移动到另一个字段时,它应显示“此字段是必需的”。此外,当我们开始在字段中输入时,此消息应该消失。

4 个答案:

答案 0 :(得分:0)

我认为你必须使用文本更改监听器

edit.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
             //set error
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }

以及他设定欲望输出的方法..希望能帮到你!

答案 1 :(得分:0)

我认为您需要参考EditText而不是TextInputLayout。 尝试

 EditText editText = (EditText)findViewById(R.id.mobileNumber);
 editText.setError("This field is required");

答案 2 :(得分:0)

我认为错误在于从布局中检索textInputLayoutMobile时可能会使用这两行代码(可能在onCreate中)。因此view设置为始终显示此错误消息。

textInputLayoutMobile.setErrorEnabled(true);
textInputLayoutMobile.setError("This field is required");

我认为应该从这一点移动这两行并设置在那里你应该验证textInputLayoutMobile输入并确定验证是错误的,例如在onClick回调或监听器中。此外,当您的输入验证为true时,请设置textInputLayoutMobile.setErrorEnabled(false);

请在此处查看示例:http://code.tutsplus.com/tutorials/creating-a-login-screen-using-textinputlayout--cms-24168

答案 3 :(得分:0)

我认为你需要把id =“@ + id / mobileNumber”,设置小部件而不是尝试类似的东西

your_widget.setOnClickListener(new OnClickListener(){

        public void onClick(final View v) {
            if (yourwidget.getText().toString().length() == 0) {
                yourwidget.setError("This field is required");}

其他等...

您可以在“下一个”按钮上使用此控件或类似的东西(保存按钮等)直接在场上使用(对不起我的英语)