在EditText android中更改键盘输入文本

时间:2013-04-11 13:57:12

标签: android android-edittext

我想更改键盘输入,

示例:

当用户按a时,将显示c

我尝试使用TextWatcher并挂起,因为在调用setText后,它将再次到达TextWatcher事件。因此,它将陷入僵局而无法正常工作。

setOnKeyListener也不起作用。输入时onKey事件到达。当我按a或b时没到。

可以在EditText Android中更改文本输入键吗?

更新:setOnKeyListener

final EditText edittext = (EditText) findViewById(R.id.editText1);

        edittext.setOnKeyListener(new OnKeyListener() {


            @Override
            public boolean onKey(View arg0, int keycode, KeyEvent event) {
                // TODO Auto-generated method stub
                Log.i("onKey", "Arrive Keypress");
                if (event.getAction()!=KeyEvent.ACTION_DOWN)
                    return true;

                 if (event != null&& (keycode == KeyEvent.KEYCODE_ENTER)) {

                     applySearch();
                     return true;
                 }

                return false;
            } 


        });

2 个答案:

答案 0 :(得分:3)

使用TextWatcher,但请巧妙使用它。当您致电setText创建boolean flag == true时,每次flag onTextChanged时都会进行检查。希望能帮到你。

public class MyActivity extends Activity implements TextWatcher {

EditText et;
boolean flag;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    et=(EditText) findViewById(R.id.et);
    et.addTextChangedListener(this);

}


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

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    if(flag)
    {
        flag = false;
        return;
    }
    else
    {
        //do same staff
        flag = true;
        et.setText("new text");
    }
}

@Override
public void afterTextChanged(Editable s) {

}
}

答案 1 :(得分:0)

是的,我可以使用sling键盘(你可以在Google Play上找到这款应用)。你可以在手机的键盘设置下选择它作为默认设置。

RGDS,

安巴尔