2017-11-11 87 views
0

在我的应用程序中,我将EditText的最大长度设置为30.这很好,当我输入英文时。但是,当我输入中文时,我也可以输入30个字符。汉字的英文字母宽度加倍。与我输入英文时相比,EditText的宽度也增加了一倍。这不是我想要的。如何在所有设备上为所有语言设置相同的EditText长度(宽度)?

如何设置30个英文字符作为最大值?当用户输入不同的语言时,EditText的宽度不能超过30个英文字符。谢谢

回答

1

您可以通过首先检测设备键盘的区域设置,然后从中获取Locale对象,然后设置最大长度来获取键盘语言。例如

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
    InputMethodSubtype ims = imm.getCurrentInputMethodSubtype(); 
    String localeString = ims.getLocale(); 
    Locale locale = new Locale(localeString); 
    if((locale.getDisplayLanguage()).equalIgnoreCase("english")) 
     { 
     editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(30)}); 
     } 
+0

谢谢。如果我确切地知道我所针对的语言,这将起作用。我知道汉字比英语的大。但是,我不知道的其他语言可能与中文相同。如果它适用于所有语言,它将会很棒。 –

0

试试这个代码:

String language = Locale.getDefault().getDisplayLanguage().toString(); 

if(language.equals(en) { 

// use set filter to limit input length in the edit text for english. 
int maxLength = 30;  
editText.setFilters(new InputFilter[] {new 
InputFilter.LengthFilter(maxLength)}); 

} else { 

// put the limit for other languages 

} 

希望它可以帮助你。

相关问题