2017-11-11 5 views
0

私のアプリでは、EditTextの最大長を30に設定しました。これは英語を入力すると問題ありません。しかし、中国語を入力すると、30文字も入力できます。漢字は英字の幅を倍にします。 EditTextの幅も、私が英語を入力したときと比べて2倍になります。これは私が望むものではありません。すべてのデバイスのすべての言語で同じEditTextの長さ(幅)を設定するにはどうすればよいですか?

英語の文字数を最大30文字に設定するにはどうすればよいですか?ユーザーが別の言語を入力すると、30文字の英字があるときにEditTextの幅を超えることはできません。ありがとう

答えて

1

デバイスのキーボードのロケールを最初に検出してからロケールオブジェクトを取得し、次に最大長を設定することで、キーボードの言語を取得できます。例えば

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 

} 

それはあなたを助け願っています。

関連する問題