我知道这个问题曾多次询问过,但我的案例中没有答案。
我在以下链接中找到了一些相同类型的问题和答案,这对我来说根本不起作用。
在我的布局文件中,我已按如下方式定义了我的EditText。
<EditText
android:id="@+id/test_editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:layout_marginTop="90dp"
android:inputType="textCapWords"
android:ems="10" >
同样在onCreate
方法的Activity类中,我添加了以下代码。
EditText testEditText = (EditText) findViewById(R.id.test_editText);
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
如果有人遇到同样的问题并解决了,我想听听我的错误。谢谢。
编辑...
按照上述步骤,我无法完成此操作(在用户输入时自动将每个单词的第一个字母大写)。
根据我的代码,当用户输入它时,在小写的所有单词(包括第一个单词)中显示第一个字符。
答案 0 :(得分:11)
android:inputType="textCapWords"
为我工作
我在问题中使用了相同的xml代码:
<EditText
android:id="@+id/test_editText"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:layout_marginTop="90dp"
android:ems="10"
android:inputType="textCapWords" >
只需检查您是否覆盖了活动中的inputType
属性。
只需尝试不更改活动中的任何内容。
答案 1 :(得分:9)
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
or android:inputType="textCapSentences"
仅在您的设备键盘启用自动大写设置时才能使用。
答案 2 :(得分:5)
这就是我所做的。 android:inputType="textCapWords"
也不适合我。
public static void setCapitalizeTextWatcher(final EditText editText) {
final TextWatcher textWatcher = 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) {
//Use WordUtils.capitalizeFully if you only want the first letter of each word to be capitalized
String capitalizedText = WordUtils.capitalize(editText.getText().toString());
if (!capitalizedText.equals(editText.getText().toString())) {
editText.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) {
editText.setSelection(mStart);
editText.removeTextChangedListener(this);
}
});
editText.setText(capitalizedText);
}
}
};
editText.addTextChangedListener(textWatcher);
}
答案 3 :(得分:0)
您是否尝试过android:inputType =“textPersonName”
答案 4 :(得分:0)
你应该尝试使用android:inputType =“textCapSentences”吗?
答案 5 :(得分:0)
你在试用Emulator还是android设备? 这对我在模拟器中起作用 机器人:的inputType =&#34; textCapWords&#34;
答案 6 :(得分:0)
只需将此代码添加到EditText android:capitalize="words"
即可。
答案 7 :(得分:0)
之前它曾是android:capitalize="words"
,现已弃用。建议的替代方法是使用android:inputType="textCapWords"
请注意,这仅适用于您的设备键盘启用自动资本化设置。
要以编程方式执行此操作,请使用以下方法:
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
答案 8 :(得分:0)
使用每个单词的首字母大写
android:inputType =“ textCapWords” 输出:
T 他的我我的 S 简单的 T ext。
要大写每个句子的第一个字母,然后使用
android:inputType =“ textCapSentences” 输出:
T 是他的第一句话。 T 是第二种陈述。
将所有字母大写
android:inputType =“ textCapCharacters”
输出: 这是简单的文字
注意:在输出中,粗体字母仅用于格式化答案。上面提到的属性不会强制这些大写。用户可以输入小写字母。
答案 9 :(得分:-1)
在你的布局上尝试这个......
android:inputType="textCapWords|textCapSentences"
对我很好..希望它对你有用......