Tôi muốn đặt maxLength
thuộc tính theo chương trình TextView
vì tôi không muốn mã cứng nó trong bố cục. Tôi không thể thấy bất kỳ set
phương pháp nào liên quan đến maxLength
.
Bất cứ ai có thể hướng dẫn tôi làm thế nào để đạt được điều này?
Tôi muốn đặt maxLength
thuộc tính theo chương trình TextView
vì tôi không muốn mã cứng nó trong bố cục. Tôi không thể thấy bất kỳ set
phương pháp nào liên quan đến maxLength
.
Bất cứ ai có thể hướng dẫn tôi làm thế nào để đạt được điều này?
Câu trả lời:
Nên là một cái gì đó như thế. nhưng không bao giờ sử dụng nó cho textview, chỉ edittext:
TextView tv = new TextView(this);
int maxLength = 10;
InputFilter[] fArray = new InputFilter[1];
fArray[0] = new InputFilter.LengthFilter(maxLength);
tv.setFilters(fArray);
editText.filters = arrayOf(*editText.filters, InputFilter.LengthFilter(10))
giữ các bộ lọc cũ với kotlin
Thử cái này
int maxLengthofEditText = 4;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
Cách dễ dàng giới hạn chỉnh sửa ký tự văn bản :
EditText ed=(EditText)findViewById(R.id.edittxt);
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)});
Dành cho những bạn đang sử dụng Kotlin
fun EditText.limitLength(maxLength: Int) {
filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
Sau đó, bạn chỉ có thể sử dụng một chỉnh sửa đơn giản.limitLpm (10)
Như João Carlos đã nói, trong Kotlin sử dụng:
editText.filters += InputFilter.LengthFilter(10)
Xem thêm https://stackoverflow.com/a/58372842/2914140 về một số thiết bị hành vi lạ.
(Thêm android:inputType="textNoSuggestions"
vào của bạn EditText
.)
LengthFilter(10)
) và sau đó thêm bộ lọc khác ( LengthFilter(20)
).
Đối với Kotlin và không đặt lại các bộ lọc trước đó:
fun TextView.addFilter(filter: InputFilter) {
filters = if (filters.isNullOrEmpty()) {
arrayOf(filter)
} else {
filters.toMutableList()
.apply {
removeAll { it.javaClass == filter.javaClass }
add(filter)
}
.toTypedArray()
}
}
textView.addFilter(InputFilter.LengthFilter(10))
Tôi đã thực hiện một chức năng mở rộng đơn giản cho cái này
/**
* maxLength extension function makes a filter that
* will constrain edits not to make the length of the text
* greater than the specified length.
*
* @param max
*/
fun EditText.maxLength(max: Int){
this.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(max))
}
editText?.maxLength(10)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_NUMBER);
//for Limit...
input.setFilters(new InputFilter[] {new InputFilter.LengthFilter(3)});
builder.setView(input);
giải pháp tốt nhất tôi tìm thấy
textView.setText(text.substring(0,10));
EditText
, nhưng cắt một văn bản sau ký hiệu thứ 10 (một lần).
Để giữ bộ lọc đầu vào ban đầu, bạn có thể làm theo cách này:
InputFilter.LengthFilter maxLengthFilter = new InputFilter.LengthFilter(100);
InputFilter[] origin = contentEt.getFilters();
InputFilter[] newFilters;
if (origin != null && origin.length > 0) {
newFilters = new InputFilter[origin.length + 1];
System.arraycopy(origin, 0, newFilters, 0, origin.length);
newFilters[origin.length] = maxLengthFilter;
} else {
newFilters = new InputFilter[]{maxLengthFilter};
}
contentEt.setFilters(newFilters);