在EditText android中更改键盘输入文本
我想更改键盘输入 例如: 当用户按a时,它将显示c 我尝试使用在EditText android中更改键盘输入文本,android,android-edittext,Android,Android Edittext,我想更改键盘输入 例如: 当用户按a时,它将显示c 我尝试使用TextWatcher,但它挂起,因为调用setText后,它将再次到达TextWatcher事件。因此,它会死锁,无法工作 setOnKeyListener也不工作onKey输入时事件到达。按a或b时未到达 是否可以在EditText Android中更改文本输入键 更新:setOnKeyListener final EditText edittext = (EditText) findViewById(R.id.editText1
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;
}
});
是的,它是可行的,我使用sling键盘(你可以在Google Play上找到这个应用程序)。你可以在手机的键盘设置下选择它作为默认值 Rgds
Ambar使用
TextWatcher
,但要灵活使用。调用setText
createboolean flag==true
,并在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) {
}
}
setOnKeyListener
应该可以工作。请输入您的代码。@AleksG,更新了问题。您正在显式地检查输入的keycode-当然它对其他键不起作用。这不是OP所要求的。他想通过编程随时更改输入,而不管使用的是什么键盘。