我已将android:inputType="text|textCapWords"
设置为我的EditText。当我在字段中键入内容时,第一个字母正确大写,但如果我使用setText()
方法设置完整的大写(或完全小写)文本,则文本仍保持完全大写(或小写)。
如何使用setText使文本符合输入类型?
答案 0 :(得分:1)
正如@Amarok建议的那样
这是预期的行为。您必须先自己格式化文本 使用setText()方法
但是如果您想像android:inputType="text|textCapWords
那样格式化文本,可以使用以下方法:
public static String modifiedLowerCase(String str){
String[] strArray = str.split(" ");
StringBuilder builder = new StringBuilder();
for (String s : strArray) {
String cap = s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
builder.append(cap + " ");
}
return builder.toString();
}
并像
一样使用它textView.setText(modifiedLowerCase("hEllo worLd"));
它将转换为:
Hello World
答案 1 :(得分:0)
您可以检查您的editText类型常量,并将简单的.toUpperCase()
添加到您要添加的文本中,如下所示:
if(mEditText.getInputType() == TYPE_TEXT_FLAG_CAP_CHARACTERS+ TYPE_CLASS_TEXT)
mEditText.setText("Some text".toUpperCase());
else
mEditText.setText("some text");
更多输入类型常量can be found here
答案 2 :(得分:0)
使用此
EditText.getText().clear();
EditText.getText().append("test");
而不是
EditText.setText("test");
以便已设置的文本遵循输入类型的行为