在 Edittext 上,当用户键入内容时,我在除第一行之外的行的最后添加“#”,我还添加了 digits="1234567890#" 以仅允许数字。这是代码
tt = new TextWatcher() {
public void afterTextChanged(Editable s){
}
public void beforeTextChanged(CharSequence s,int start,int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count) {
inter.removeTextChangedListener(tt);
String[] lines = inter.getText().toString().
replace("#","").
split(System.getProperty("line.separator"));
StringBuilder str= new StringBuilder();
int row = 0;
for(String st : lines){
str.append(st+repeate("#",row)+System.getProperty("line.separator"));
row++;
}
inter.setText(str);
inter.addTextChangedListener(tt);
}
};
但是这个问题是当用户输入任何东西时,它的光标会移动到行首。
此外,当用户在光标位于“#”之间时按下软键盘上的 del 时,它应该删除该行的最后一位,并且光标应该移动到它的附近。
请帮忙。
编辑
现在光标工作正常,除了退格键
<EditText
android:id="@+id/inter"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:textSize="25sp"
android:paddingRight="50dp"
android:paddingTop="15dp"
android:paddingBottom="10dp"
android:digits="1234567890\n"
android:imeOptions="flagNoExtractUi"
/>
tt = new TextWatcher() {
int select =0;
public void afterTextChanged(Editable s){
inter.setSelection(select);
}
public void beforeTextChanged(CharSequence s,int start,int count, int after){
select = inter.getSelectionStart()+1;
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
inter.removeTextChangedListener(tt);
String[] lines = inter.getText().toString().
replace("#","").
split(System.getProperty("line.separator"));
StringBuilder str= new StringBuilder();
int row = 0;
for(String st : lines){
str.append(st+repeate("#",row)+System.getProperty("line.separator"));
row++;
}
inter.setText(str);
inter.addTextChangedListener(tt);
}
};
inter.addTextChangedListener(tt);