我已设置android:inputType="text|textCapWords"
为我的 EditText。当我在字段中键入内容时,第一个字母正确大写,但如果我使用该setText()
方法设置全大写(或全小写)文本,则文本保持全大写(或小写)。
如何使用 setText 使文本符合输入类型?
我已设置android:inputType="text|textCapWords"
为我的 EditText。当我在字段中键入内容时,第一个字母正确大写,但如果我使用该setText()
方法设置全大写(或全小写)文本,则文本保持全大写(或小写)。
如何使用 setText 使文本符合输入类型?
正如@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"));
它会将其转换为:
你好世界
您可以检查您的 editText 类型常量,并将简单添加.toUpperCase()
到您要添加的文本中,如下所示:
if(mEditText.getInputType() == TYPE_TEXT_FLAG_CAP_CHARACTERS+ TYPE_CLASS_TEXT)
mEditText.setText("Some text".toUpperCase());
else
mEditText.setText("some text");
更多输入类型常量可以在这里找到
用这个
EditText.getText().clear();
EditText.getText().append("test");
而不是
EditText.setText("test");
以便已设置的文本遵循输入类型行为