我有一个编辑文本字段。编辑文本已使用不可见符号创建,例如'#' - 隐形符号。当用户单击EditText时,它会在虚拟键盘上显示小写字母。
我希望在隐形符号第一个字母后盖上,其余部分在键盘上小。
如何做到这一点?
答案 0 :(得分:2)
最后我找到了解决方案。我通过InputType解决了这个问题。这很糟糕,但没有更好的我没找到。 在CustomEditText中,您应该重写方法onSelectionChanged并在那里更改InputType:
public boolean isWasCap = false;// Was capitalisation turn on?
public void onSelectionChanged(int selStart, int selEnd) {
...
setCap();
}
/**
* Method check is need turn on capitalization
*/
private void setCap(){
int start = getSelectionStart();
int end = getSelectionEnd();
if (start == end && start > 0
&& getText().charAt(start-1) == INVISIBLE_SYMBOL) {
if(isWasCap) // Capitalization is turn on
return;
setInputMask(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES, InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
isWasCap = true;
}else if(isWasCap){
isWasCap = false;
setInputMask(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS, InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
}
}
/**
* Method replace one input type to other input type
* @param needRemove - mask which will remove
* @param needSetup - masr which will setup
*/
public void setInputMask(int needRemove, int needSetup){
int mask = getInputType() & ~needRemove;
mask = mask | needSetup;
setInputType(mask);
}
style.xml
<style name="Common.Editor">
<item name="android:inputType">textCapSentences|textMultiLine|textAutoCorrect</item>
</style>
main_activity.xml
<com.view.CustomEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Common.Editor"
/>
答案 1 :(得分:0)
只需在EditText上设置android:inputType="textCapSentences"
即可。
OR
android:inputType="textCapWords"