EditText的首字母大写

我正在做一个小个人待办事项列表应用程序,迄今为止一切工作都很好。 有一个小问题我想弄清楚。 每当我去添加一个新的项目,我有一个EditText视图里面显示的对话框。 当我selectEditText视图时,键盘会popup来input文字。 在大多数应用程序中,默认情况下似乎是第一个字母的换档键…虽然这不符合我的观点。 必须有一个简单的方法来解决,但我已经反复search参考,找不到它。 我认为必须有适配器加载的引用xml属性,但我不知道它是什么。

静态(即在您的布局XML文件中):在您的EditText上设置android:inputType="textCapSentences"

以编程方式:您必须在EditTextInputType中包含InputType.TYPE_CLASS_TEXT ,例如

 EditText editor = new EditText(this); editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

可以结合文本及其变体来请求将每个句子的第一个字符大写。

– 谷歌文档

只需在您的EditText元素中使用android:inputType="textCapWords"

例如:

 <EditText android:id="@+id/txtName" android:layout_width="0dp" android:layout_height="40dp" android:layout_weight="0.7" android:inputType="textCapWords" android:textColorHint="#aaa" android:hint="Name Surname" android:textSize="12sp" /> 

请参阅以下链接以供参考: http : //developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType

 testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 

android:inputType="textCapSentences"将只能工作如果您的设备键盘启用了Auto Capitalize Setting。

我遇到了同样的问题,只是分享我发现的。 可能帮助你和其他人…

尝试一下你的layout.add在你的EditText下面的行。

 android:inputType="textCapWords|textCapSentences" 

对我的工作很好..希望它也适用于你…

在XML编辑testing中应用以下行。

 android:inputType="textCapSentences|textMultiLine" 

它也将允许多线支持。

试试这个代码,它将大写所有单词的第一个字符。

– 为EditText视图设置addTextChangedListener

edt_text.addTextChangedListener(观察者);

– 添加TextWatcher

 TextWatcher watcher = new TextWatcher() { int mStart = 0; @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { mStart = start + count; } @Override public void afterTextChanged(Editable s) { String input = s.toString(); String capitalizedText; if (input.length() < 1) capitalizedText = input; else if (input.length() > 1 && input.contains(" ")) { String fstr = input.substring(0, input.lastIndexOf(" ") + 1); if (fstr.length() == input.length()) { capitalizedText = fstr; } else { String sstr = input.substring(input.lastIndexOf(" ") + 1); sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1); capitalizedText = fstr + sstr; } } else capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1); if (!capitalizedText.equals(edt_text.getText().toString())) { edt_text.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { edt_text.setSelection(mStart); edt_text.removeTextChangedListener(this); } }); edt_text.setText(capitalizedText); } } }; 

此前它曾经是android:capitalize="words" ,现在已经被弃用了。 推荐的替代方法是使用android:inputType="textCapWords"

请注意,这只有在您的设备键盘启用“Auto Capitalize Setting”时才有效。

要以编程方式执行此操作,请使用以下方法:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);