0

在 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);
4

0 回答 0