在EditText中输入String,例如“Love Is Life”,输入单词“Love”后输入空格,然后点击字母'i'后自动将其改为大写字母'I'。
这意味着每个字符串空格后的字符必须为大写字母,并在EditText中输入字符时动态进行更改,以激发Camel案例格式。
如果有人知道意味着帮助我。
感谢。
答案 0 :(得分:2)
您可以向EditText
添加TextWatcher,并在每次通知文本时收到通知。使用它,您可以解析String以查找空格后的字符,并将它们更新为大写。
这是我做的快速测试,效果非常好(远非最佳,因为每次编辑Editable时,它都会再次调用侦听器......)。
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
String string = s.toString();
int index = -1;
while (((index = string.indexOf(' ', index + 1)) != -1) && (index + 1 < string.length())) {
// Get character
char c = string.charAt(index + 1);
if (Character.isLowerCase(c)) {
// Replace in editable by uppercase version
s.replace(index+1, index + 2, Character.toString(c).toUpperCase());
}
}
}
});
为了避免经常被调用,您可以在char[]
中进行所有更改,并且只有在进行了更改时才会提交到Editable
。
一个更简单的解决方案可能只是在你的String上使用split(' ')
,用大写版本替换String[]
中的所有首字母(如果需要),并只提交一次{{1} }。
更简单的优化是向匿名类添加布尔值,将其设置为在输入afterTextChanged时尝试,在退出时将其设置为false,并且仅在布尔值为false时处理字符串。
答案 1 :(得分:1)
我知道这已经老了,我偶然发现它寻找同样的东西并找到了完美的方法,所以我想要分享给那些偶然发现这个问题的人。您可以使用EditText
android:inputType="textCapWords
的布局XML中设置它
<EditText
android:inputType="textCapWords" />
这样做会导致EditText
控件使每个单词以大写字母开头 - 包括当用户将其更改为小写自己并移动到下一个单词时!
答案 2 :(得分:0)
你需要为字段实现TextWatcher
并听取空格,在你需要更改用户输入的字符大小的空格后
答案 3 :(得分:0)
如果etitText.getText.toString.trim.length-1 ==''稍后设置cha,则可以在按键功能上执行此操作。