Java android EditText maxLength不工作
这是我的xmlJava android EditText maxLength不工作,java,android,filter,android-edittext,maxlength,Java,Android,Filter,Android Edittext,Maxlength,这是我的xml <EditText android:id="@+id/et_comment" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textNoSuggestions|textVisiblePassword" android:hint="Provide co
<EditText
android:id="@+id/et_comment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions|textVisiblePassword"
android:hint="Provide comments here..."
android:gravity="top"
android:maxLength="5"
android:textSize="12sp"
android:visibility="visible"
/>
maxLenth不工作,我不知道为什么,但它不工作。我已经检查了堆栈上的其他答案,但它们也不起作用。
请检查EditText属性是否存在冲突,或者问题是什么 编辑:其他开发人员也面临同样的问题
参见评论Mansi和aat正面临同样的问题
在评论中,Vincy和Ripper也面临着同样的问题 编辑:问题已解决
我使用的输入过滤器会覆盖xml中的最大长度,使其无法工作。
输入筛选器不适用于我的原因是,我使用的另一个输入筛选器覆盖了以前的maxLength输入筛选器。
将其转换为单个输入筛选器为我解决了这个问题。如果您对edittext使用InputFilter,那么maxLength将不起作用。相当旧的帖子,但我注意到XML是一个实际的
edittext
对象,将过滤器添加到文本视图
时,该视图的处理方式可能与编辑文本
不同。如果手动添加InputFilter
对象,则会覆盖xml属性
将InputFilter
s添加到View
的示例代码似乎是TextView
对象。确保你拉到了正确的视图,如果你使用手动添加的过滤器,它将被转换为EditText
——它现在对我有效
祝你好运。试试这个,它对maxlenght和输入过滤器都有效
month.setFilters(new InputFilter[]{new InputFilterMinMax("0", "12"), new InputFilter.LengthFilter(2)});
如果您已经有InputFilter,那么maxLength将不起作用。您必须创建一个额外的InputFilter并添加它:
// Filter for comma character
String blockCharacterSet = ",";
InputFilter filter = (source, start, end, dest, dstart, dend) -> {
if (source != null && blockCharacterSet.contains(("" + source))) {
return "";
}
return null;
};
// Filter for max Length
InputFilter filter1 = new InputFilter.LengthFilter(20);
// Set the filters
et_list_name.setFilters(new InputFilter[] { filter, filter1 });
添加字符限制和输入限制。
private String BlockCharacterSet_Name = "\\@$#!=><&^*+\"\'";
mFirstName.setFilters(new InputFilter[] {new InputFilter.LengthFilter(25),inputFilter_Name});
private InputFilter inputFilter_Name = new InputFilter() { //filter input for name fields
@Override
public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
if (charSequence != null && BlockCharacterSet_Name.contains(("" + charSequence))) {
return "";
}
return null;
}
};
private String BlockCharacterSet\u Name=“\\@$\!=”>尝试以下操作:
val existingFilters: Array<InputFilter> = editText.filters
editText.filters = existingFilters.apply { plus(filter) }
val existingFilters:Array=editText.filters
editText.filters=existingFilters.apply{plus(filter)}
您需要获取通过XML应用的现有筛选器列表,如maxLength,然后向其中添加更多筛选器。在您的情况下,editText的maxLength属性已被您尝试应用的自定义InputFilter覆盖。它正在工作,android:maxLength=“5”“工作!但它对我不起作用:/我建议你用USB调试手机。我就是这么做的!让我们看看你说的“不工作”是什么意思?可能是一个屏幕截图或其他什么东西这行在本月很有用。setFilters(new InputFilter[]new InputFilter.LengthFilter(2)});特别是,如果您想应用多个过滤器,xamarin是:new Android.Text.InputFilterLengthFilter(2)
val existingFilters: Array<InputFilter> = editText.filters
editText.filters = existingFilters.apply { plus(filter) }