使用setText设置文本时,InputType不起作用

时间:2017-07-11 11:02:08

标签: android android-edittext android-inputtype

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

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

3 个答案:

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

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