回答:
Androidには、このためのInputFilterが組み込まれています。
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
注意してください、setFilters
他のすべての属性がリセットされます XMLを使って設定された(すなわちmaxLines
、inputType
、imeOptinos
...)。これを防ぐには、既存のフィルターにフィルターを追加します。
InputFilter[] editFilters = <EditText>.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = <YOUR_FILTER>;
<EditText>.setFilters(newFilters);
maxLength
するにはInputFilter.AllCaps()
、editText.getFilters
配列にtoを追加してみてください。stackoverflow.com/a/18934659/3890983を
editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
コトリンは素晴らしい!<3
EditTextでデフォルトでユーザーに大文字での書き込みを強制したい場合は、を追加するだけです。(ユーザーは引き続き手動で小文字に変更できます。)android:inputType="textCapCharacters"
をに設定input type
し TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
ます。はそれkeyboard
を尊重する必要があります。
双方向で使用できます。
最初の方法:
android:inputType="textCapSentences"
EditTextに設定します。
二番目の方法:
ユーザーが番号を入力するときは、テキストウォッチャーを使用して、小文字を大文字に変更する必要があります。
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
edittext.setSelection(edittext.length()); //fix reverse texting
}
}
});
android:textAllCaps="true"
EditTextでxmlファイルにプロパティを追加できます。これにより、ソフト入力キーボードがすべて大文字モードで表示されます。入力した値は大文字で表示されます。ただし、これはユーザーがUpperCase
文字でのみ入力できることを保証するものではありません。必要に応じて、小文字に戻すこともできます。の出力がEdittext
すべて大文字になっていることを確認する場合は、クラスのtoUpperCase()
メソッドを使用して入力文字列を手動で変換する必要がありますString
。
android:textAllCaps="true"
TextViewのプロパティのみです(stackoverflow.com/a/28803492/5268730)。android:inputType="textCapCharacters"
代わりに使用してください。
android:inputType="textCapCharacters"
Edittextをxmlファイルに入れる必要があります。
キーボードの扱いについて心配するのではなく、小文字または大文字の入力を受け入れて、文字列を大文字に変換してみませんか?
次のコードが役立つはずです。
EditText edit = (EditText)findViewById(R.id.myEditText);
String input;
....
input = edit.getText();
input = input.toUpperCase(); //converts the string to uppercase
大文字の文字列が必要であることをユーザーが知る必要がないため、これはユーザーフレンドリーです。お役に立てれば。
さらに良いことに... 1つのライナーでKotlin ...
// gets your previous attributes in XML, plus adds AllCaps filter
<your_edit_text>.setFilters(<your_edit_text>.getFilters() + InputFilter.AllCaps())
できた!
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
ではkotlin、.ktファイルメイクの変更で:
edit_text.filters = edit_text.filters + InputFilter.AllCaps()
idを持つウィジェットに直接アクセスするには、合成プロパティを使用します。XMLでは、編集テキストに次のようなフラグをいくつか追加します。
<EditText
android:id="@+id/edit_text_qr_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...other attributes...
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
これにより、大文字が有効になり、キーボードが更新されます。
入力フィルターを使用
editText = (EditText) findViewById(R.id.enteredText);
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
}
editText.setSelection(editText.getText().length());
}
});
私にとっては、android:textAllCaps = "true"とandroid:inputType = "textCapCharacters"を追加することで機能しました
<android.support.design.widget.TextInputEditText
android:layout_width="fill_parent"
android:layout_height="@dimen/edit_text_height"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
すべての資本を得るには、XMLで次のように使用します。
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
受け入れられた回答に基づくと、この回答は同じですが、Kotlinで行われます。コピー貼り付けを簡単にするために:・)
private fun EditText.autocapitalize() {
val allCapsFilter = InputFilter.AllCaps()
setFilters(getFilters() + allCapsFilter)
}
filters += InputFilter.AllCaps()
:D
edittextをクリックしたときに大文字のキーボードを取得するには、xmlでこのコードを使用します。
<EditText
android:id="@+id/et"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="Input your country"
android:padding="10dp"
android:inputType="textCapCharacters"
/>
私はVisual Studio 2015 / Xamarinを使用して、Android 5.1とAndroid 6.0の両方にアプリをビルドしています(両方に同じAPKがインストールされています)。
android:inputType="textCapCharacters"
axmlで指定すると、AllCapsキーボードはAndroid 6.0では期待どおりに表示されましたが、Android 5.1では表示されませんでした。android:textAllCaps="true"
Android 5.1ではaxml に追加しましたが、AllCapsキーボードはまだありません。を使用してフィルターを設定しますEditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
しました。Android5.1ではソフトキーボードに小文字が表示されますが、入力フィールドはAllCapsになっています。
編集:私が観察し、OS関連であると想定した動作の違いは、実際にはテストデバイスでGoogleキーボードのバージョンが異なるためでした。 デバイスを最新のGoogleキーボード(この記事の執筆時点で2016年7月にリリース)に更新すると、「すべて大文字」の動作はOS間で一貫しました。現在、すべてのデバイスでキーボードに小文字が表示されていますが、入力が原因ですべて大文字になっていますSetFilters(new IInputFilter[] { new InputFilterAllCaps() });
ErlVoltonの答えに相当するXamarin:
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
単に、以下のコードをxmlファイルのEditTextに追加します。
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
大文字のテキストと数字の両方を許可する場合は、以下のコードを使用します。
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
です。