0

我已设置android:inputType="text|textCapWords"为我的 EditText。当我在字段中键入内容时,第一个字母正确大写,但如果我使用该setText()方法设置全大写(或全小写)文本,则文本保持全大写(或小写)。

如何使用 setText 使文本符合输入类型?

4

3 回答 3

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"));

它会将其转换为:

你好世界

于 2017-07-11T11:28:01.733 回答
0

您可以检查您的 editText 类型常量,并将简单添加.toUpperCase()到您要添加的文本中,如下所示:

if(mEditText.getInputType() ==  TYPE_TEXT_FLAG_CAP_CHARACTERS+ TYPE_CLASS_TEXT)
        mEditText.setText("Some text".toUpperCase());
    else
        mEditText.setText("some text");

更多输入类型常量可以在这里找到

于 2017-07-11T11:23:57.910 回答
0

用这个

EditText.getText().clear(); 
EditText.getText().append("test");

而不是

EditText.setText("test");

以便已设置的文本遵循输入类型行为

于 2019-07-15T08:11:30.857 回答