2017-11-11 89 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 

} 

希望它可以幫助你。

相關問題