首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EditText,如何在TextWatcher中控制光标?

EditText,如何在TextWatcher中控制光标?
EN

Stack Overflow用户
提问于 2013-05-13 13:54:25
回答 3查看 4.2K关注 0票数 4

我在EditText上有一个TextWatcher,在afterTextChanged方法中,我将字符添加到EditText中,然后将光标移动到EditText的末尾,以继续添加文本,但我遇到了问题。

如下所示:

代码语言:javascript
运行
复制
public void afterTextChanged(Editable s) {

    if(edittext.getText().length()==2){

        // append dot to edittext
        edittext.append(".");
        // move cursor at end position in EditText
        edittext.setSelection(edittext.getText().length());
      }
}

在安卓4.0v或更高版本中,光标停留在".“之前,在2.2v中可以正常工作,但在这两个版本中我都无法删除字符。

有谁有同样的问题吗?

Grettings

EN

回答 3

Stack Overflow用户

发布于 2013-05-13 14:05:20

您可以这样做,以避免删除问题...

代码语言:javascript
运行
复制
public class MainActivity extends Activity {
    int count=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText edittext=(EditText)findViewById(R.id.editText1);

        edittext.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable ed) {
                // TODO Auto-generated method stub

                 if(edittext.getText().length()==2 && count < 3){

                        // append dot to edittext
                        edittext.append(".");
                        // move cursor at end position in EditText
                        edittext.setSelection(edittext.getText().length());
                      }
                 count=edittext.getText().length();
            }
        });
    }
票数 5
EN

Stack Overflow用户

发布于 2013-05-13 13:57:39

你的代码看起来没问题...

但是,如果您删除一个字符,文本长度又是== 2,您的代码将自动添加一个'.‘。再次使用char -所以看起来删除是不可能的。

票数 2
EN

Stack Overflow用户

发布于 2018-02-03 10:19:11

代码语言:javascript
运行
复制
new TextWatcher() {

    int startChanged,beforeChanged,countChanged;

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {

        startChanged = start;
        beforeChanged = before;
        countChanged = count;
    }


    public void afterTextChanged(Editable s) {
            ...your code here....
            myEditText.setSelection(startChanged+countChanged);
            ...your code here...
        }
    }
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16515624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档