Answers:
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
数组。见stackoverflow.com/a/18934659/3890983
editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
Kotlin很棒!<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
在大写形式下,则必须使用class toUpperCase()
方法手动转换输入的String String
。
android:textAllCaps="true"
只是TextView的属性(stackoverflow.com/a/28803492/5268730)。使用android:inputType="textCapCharacters"
代替。
您应该将android:inputType="textCapCharacters"
Edittext放在xml文件中。
更妙的是... 一个班轮在科特林 ...
// 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());
}
});
只是这样做:
// ****** Every first letter capital in word *********
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
/>
//***** if all letters are capital ************
android:inputType="textCapCharacters"
对我来说,它通过添加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"
/>
试试这个代码,它将使您的输入变成大写
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
根据接受的答案,此答案的作用相同,但在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"
到axml中,但在Android 5.1上仍然没有AllCaps键盘。我使用设置了一个过滤器EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
,而软键盘在Android 5.1上显示小写字符时,输入字段现在为AllCaps。
编辑:我观察到并假定与操作系统相关的行为差异实际上是因为我在测试设备上安装了不同版本的Google键盘。 当我将设备更新为最新版的Google键盘(在撰写本文时已于2016年7月发布)后,“全大写”行为在所有操作系统上都是一致的。现在,所有设备在键盘上都显示小写字符,但是由于SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
Xamarin相当于ErlVolton的答案:
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
只需将以下代码添加到xml文件的EditText中即可。
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
如果要同时允许大写字母和数字,请使用以下代码。
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
。