android 文本长度,关于android:编辑文本的最大长度并在textview中显示长度

在Android应用中,可以使用android:maxLength属性或编程方式设置EditText的最大输入长度。当达到最大长度时,用户将无法继续输入。同时,通过添加TextWatcher,可以在TextView中实时更新并显示剩余的字符数。例如,设置EditText最大长度为150,每当用户输入字符,TextView会显示剩余的输入字符数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

如何解决这个问题?

要设置EditText的最大长度(选择一个或另一个):

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

android:id="@+id/yourEditTextId"

...

android:maxLength="150" />

以编程方式(在您的onCreate方法中),如下所示:

EditText et = (EditText)findViewById(R.id.yourEditTextId);

et.setFilters(new InputFilter[] {

new InputFilter.LengthFilter(150) // 150 is max length

});

要保留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.发布您的LogCat错误和2.发布您的整个代码。 请访问pastie.org并给我发送链接。 该代码对我有用。

pastie.org/8724869这是Log Cat错误

@JeremiahMe错误消息中不能只包含其他内容。 无论哪种方式,您都会得到一个NullPointerException,这意味着尚未设置值。 寄给我全班。

pastie.org/8724878 @mike

@JeremiahMe我想现在可以用了吗?

是的,它有效,谢谢。 我还是android中的新手... @ mike

您可以使用设置长度

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

或在xml中

maxLength ="LENGTH"

然后,您可以设置一个TextWatcher,并且在那里也可以得到String,因此长度也可以。

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

1,极限长度。

2,如果输入更多,请回调以触发吐司。

3,光标可以在中间或尾部。

4,用户可以通过粘贴字符串输入。

5,始终丢弃溢出输入并保持原点。

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

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

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

并在类文件中为EditText实现addTextChangedListener()方法

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)

{ }

}

在xml中使用以下代码:

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

使用这个android:maxLength =" 150"

android:id="@+id/editText10"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:ems="10"

android:maxLength="150"

/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值