編集:やや良い回避策は設定ですImhNoAutoUppercase
。最初の文字は引き続き大文字ですが、少なくとも次に入力する文字は小文字になります。
元の回答:
Android では、Activity/Fragment (画面/ページ) のレイアウト ファイルの xml で EditText の inputType を使用して設定されます。Android のレイアウト ファイルに直接アクセスして編集できますか?
入力タイプを制御するために setInputMask() を使用していますか? 小文字を強制する (または大文字と小文字の変換を切り替える) と、大文字または小文字を使用するオプションが与えられる場合があります。Android レイアウト xml ファイルに設定されているのは、inputType="textCapSentences" または類似のもの ( https://developer.android.com/training/keyboard-input/style.html ) だと思います。
更新: この問題は 5.4 で修正されたとのことです。これは、それを修正するコミットのように見えます。ここに示されている修正を実装することをお勧めします。https://qt.gitorious.org/qt/qtbase/commit/2b3f293d892c5268bd2a07ed17fa9fc5adacbd76
Qt のソース コードを喜んで編集できるとおっしゃいました。エラーは src/org/qtproject/qt5/android/QtActivityDelegate.java のこの部分にあると思います
if ((inputHints & ImhUppercaseOnly) != 0) {
initialCapsMode |= android.text.TextUtils.CAP_MODE_CHARACTERS;
inputType |= android.text.InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS;
} else if ((inputHints & ImhLowercaseOnly) == 0 && (inputHints & ImhNoAutoUppercase) == 0) {
initialCapsMode |= android.text.TextUtils.CAP_MODE_SENTENCES;
inputType |= android.text.InputType.TYPE_TEXT_FLAG_CAP_SENTENCES;
}
次のように変更する必要があります。
if ((inputHints & ImhUppercaseOnly) != 0) {
initialCapsMode |= android.text.TextUtils.CAP_MODE_CHARACTERS;
inputType |= android.text.InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS;
} else if ((inputHints & ImhLowercaseOnly) == 0 && (inputHints & ImhNoAutoUppercase) == 0) {
//initialCapsMode |= android.text.TextUtils.CAP_MODE_SENTENCES; // not sure what to set here - could try 0 or null if commenting out line doesn't work
inputType |= android.text.InputType.TYPE_CLASS_TEXT;
}
これで問題が解決しない場合は、ソース コードで android.text.InputType.TYPE_TEXT_FLAG_CAP または android.text.TextUtils.CAP_MODE を検索し、試行錯誤してそれらを置き換えることをお勧めします。