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



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

如何解决这个问题?

要设置编辑文本的最大长度(选择一个或另一个):

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

    <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
    });
    

要保留编辑文本中剩余长度的计数器,请执行以下操作:

将此

侦听器添加到您的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) 
    { }
});

您可以使用以下命令设置长度

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

或以 XML 格式

maxLength = "LENGTH"

然后你可以设置一个TextWatcher,你也可以在那里得到字符串,所以长度。

设置布局文件中EditTextandroid:maxLength:"150"

并在类文件中实现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) 
    { }
}

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

1、极限长度。2,如果输入更多,则回调以触发您的吐司。3,光标可以在中间或尾部。4,用户可以通过粘贴字符串输入。5、始终丢弃溢出输入并保持原点。

这里: https://stackoverflow.com/a/46922794/2468360

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

使用这个 android:maxLength="150"

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

在 xml 中使用以下命令:

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

最新更新