编辑文本最大长度并在textview中显示长度

时间:2014-02-12 04:34:16

标签: android

我有一个编辑文本和一个文本视图,我想在我的编辑文本中设置一个最大长度,它在我的文本视图中显示,每次用户输入一个字符时它将减去字符数。例如,我将编辑文本的最大长度设置为150,如果用户输入150个字符,则他/她不能再输入。

如何解决此问题?

6 个答案:

答案 0 :(得分:14)

设置EditText的最大长度(选择其中一个):

  1. 在您的XML文件(推荐)中,使用属性android:maxLength="150"例如:

    <EditText
        android:id="@+id/yourEditTextId"
        ...
        android:maxLength="150" />     
    
  2. 以编程方式(在您的onCreate方法中),如下所示:

    EditText et = (EditText)findViewById(R.id.yourEditTextId);
    et.setFilters(new InputFilter[] { 
        new InputFilter.LengthFilter(150) // 150 is max length
    });
    

  3. 要保留EditText中剩余长度的计数器:

    onCreate方法中添加此侦听器(或任何地方,但在onCreate中有意义):

    final EditText et = (EditText)findViewById(R.id.yourEditTextId);
    et.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            TextView tv = (TextView)findViewById(R.id.yourTextViewId);
            tv.setText(String.valueOf(150 - et.length()));
        }
    
        @Override
        public void onTextChanged(CharSequence s, int st, int b, int c) 
        { }
        @Override
        public void beforeTextChanged(CharSequence s, int st, int c, int a) 
        { }
    });
    

答案 1 :(得分:1)

您可以使用

设置长度

editText.setFilters( new InputFilter[] { new InputFilter.LengthFilter(YOUR_LENGTH) } );

或在xml中

maxLength = "LENGTH"

然后你可以设置一个TextWatcher,你也可以得到那么长的字符串。

答案 2 :(得分:0)

在布局文件中为android:maxLength:"150"设置EditText

addTextChangedListener()

的类文件实现EditText方法中
yourEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        TextView textView = (TextView)findViewById(R.id.yourTextViewId);
        textView.setText(String.valueOf(150 - s.toString().length()));
    }

    @Override
    public void onTextChanged(CharSequence s, int st, int b, int c) 
    { }
    @Override
    public void beforeTextChanged(CharSequence s, int st, int c, int a) 
    { }
}

答案 3 :(得分:0)

我已经看到了很多很好的解决方案,但我想提供一个我认为更完整和用户友好的解决方案,其中包括:

1,限制长度。 2,如果输入更多,给予回调以触发你的祝酒词。 3,光标可以在中间或尾部。 4,用户可以通过粘贴字符串输入。 5,始终丢弃溢出输入并保留原点。

此处:https://stackoverflow.com/a/46922794/2468360

您可以使用回调来显示可以输入的左侧数字。

答案 4 :(得分:-1)

使用此 android:maxLength =“150”

        <EditText
         android:id="@+id/editText10"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:ems="10"
         android:maxLength="150"
          />

答案 5 :(得分:-1)

在xml中使用:

android:maxLength="Length_size" // size that you want