TextWatcher使Edittext中的打字速度变慢(Android)

时间:2015-09-25 03:50:45

标签: android android-edittext typing

以下代码用于获取文字更改功能的输入状态.....

mEditText.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            try {
                session.typing();
            } catch (OmegleException e) {
                e.printStackTrace();
            }
        }
        public void beforeTextChanged(CharSequence s, int start, 
                int count, int after) {

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

        }
    });

2 个答案:

答案 0 :(得分:1)

尝试类似这样的东西-guess就是这样的聊天应用程序 -

final Random ran = new Random();
mEditText.addTextChangedListener(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) {
             if(start %2 ==0 && ran.nextBoolean()){
                 try {
                   session.typing();
                 } catch (OmegleException e) {
                       e.printStackTrace();
                 }
    }
});

修改

b4我做你的最后一个请求,你介意在新线程上运行session.typing,就像这样

new Thread(new Runnable() {
            @Override
            public void run() {
              try {
                   session.typing();
                 } catch (OmegleException e) {
                       e.printStackTrace();
                 }
              }
           }).start();

修改2

第一个字母输入

mEditText.addTextChangedListener(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) {
             if(start ==1){
                 try {
                   session.typing();
                 } catch (OmegleException e) {
                       e.printStackTrace();
                 }
    }
});

答案 1 :(得分:0)

It can be fixed by changing the EditText width to 0dp using weighted widths to 
match/fill the parent.

我不确定为什么会发生这种情况,但我相信这是因为当EditText的宽度设置为包装内容时,它会调整/重绘自身,以便一切都适合。因此,通过使EditText具有固定的宽度,不再需要重绘。

“0dp”表示宽度是多少?它应该占用所有可用空间吗?

是的,它会的。 layout_weight标签将执行此操作。

 <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="5"/>

对于你的问题,我有一个建议:

将您的状态设置为输入,直到用户不按键盘上的完成按钮。

editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
 if (actionId == EditorInfo.IME_ACTION_DONE) {
 //do here your stuff f
 return true;
 }
 return false;
} });