मैं प्रोग्रामेटिक रूप से maxLength
प्रॉपर्टी सेट करना चाहूंगा TextView
क्योंकि मैं इसे लेआउट में हार्ड कोड नहीं देना चाहता। मैं इससे set
संबंधित कोई विधि नहीं देख सकता maxLength
।
क्या कोई मुझे बता सकता है कि इसे कैसे प्राप्त किया जाए?
मैं प्रोग्रामेटिक रूप से maxLength
प्रॉपर्टी सेट करना चाहूंगा TextView
क्योंकि मैं इसे लेआउट में हार्ड कोड नहीं देना चाहता। मैं इससे set
संबंधित कोई विधि नहीं देख सकता maxLength
।
क्या कोई मुझे बता सकता है कि इसे कैसे प्राप्त किया जाए?
जवाबों:
कुछ ऐसा होना चाहिए। लेकिन इसका उपयोग कभी भी टेक्स्टव्यू के लिए नहीं किया गया, केवल संपादन के लिए:
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))
कोटलिन के साथ पुराने फिल्टर रखें
इसे इस्तेमाल करे
int maxLengthofEditText = 4;
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)});
कोटलिन का उपयोग करने वालों के लिए
fun EditText.limitLength(maxLength: Int) {
filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
तो आप बस एक सरल editText.limitLength (10) का उपयोग कर सकते हैं
जैसा कि जोआओ कार्लोस ने कहा, कोटलिन में:
editText.filters += InputFilter.LengthFilter(10)
यह भी देखें https://stackoverflow.com/a/58372842/2914140कुछ उपकरणों के बारे में अजीब व्यवहार।
( android:inputType="textNoSuggestions"
अपने को जोड़ें EditText
।)
LengthFilter(10)
) हटाना चाहिए और फिर दूसरा ( LengthFilter(20)
) जोड़ना चाहिए ।
कोटलिन के लिए और पिछले फिल्टर को रीसेट किए बिना:
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))
मैंने इसके लिए एक सरल विस्तार समारोह बनाया
/**
* 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);
सबसे अच्छा समाधान मुझे मिला
textView.setText(text.substring(0,10));
EditText
, लेकिन 10 वें प्रतीक (एक समय) के बाद एक पाठ को काट दिया जाएगा।
मूल इनपुट फ़िल्टर रखने के लिए, आप इसे इस तरह से कर सकते हैं:
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);