TextInputEdit关于文本长度的文本计数器

时间:2017-03-02 07:00:48

标签: android android-textinputlayout

我不确定"更好"处理编辑文本的最大长度的方法。

最好显示一个显示文本字段中允许的最大字符数的计数器,但是让用户输入任何数量并在用户提交表单后显示错误

或者

显示最大字符允许的计数器并将其限制为该数量,因此如果用户超过该数量,它将停止输入更多字符?

我知道无论如何都是"罚款"我想知道从用户角度处理这种情况的最佳方法是什么。

3 个答案:

答案 0 :(得分:2)

从用户的角度来看,如果弹出一个对话框并告诉我你输入的内容超出了长度限制,我会讨厌。这比第二个选项更不直观,在第二个选项中,您将用户限制为不超过指定长度的类型。

答案 1 :(得分:1)

一旦我们使用Android并且当前的UI / UX规范在https://material.io/guidelines/components/text-fields.html#text-fields-character-counter,并且要使用该功能,您需要设计支持库。使它工作的代码是:

<android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:counterEnabled="true"
                app:counterMaxLength="300">
      <android.support.design.widget.TextInputEditText
                    android:id="@+id/comment_body"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/comment_hint"
                    android:lines="4"/>
</android.support.design.widget.TextInputLayout>

答案 2 :(得分:0)

我建议您显示具有Edittext最大限制的计数器。用户输入时,您应该告诉用户剩余的文字。一旦达到极限,您就会以负面方式显示计数器。

提交显示错误“文字超出限制。它将被省略”并提供继续和编辑选项。

enter image description here

您可以使用 TextWatcher 来显示限制

private TextView mTextView;
private EditText mEditText;
private int textLimit=60;


private final TextWatcher mTextEditorWatcher = new TextWatcher() {
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
           //This sets remaining text 
           if(s.length()>textLimit){
                  mTextView.setText("-"+(s.length() - textLimit));
           } else {
                  mTextView.setText("-"+(textLimit - s.length()));
           }
        }

        public void afterTextChanged(Editable s) {
        }
};
mEditText.addTextChangedListener(mTextEditorWatcher);