Android:在edittext中显示键盘
我在Android应用编码中遇到了一个非常简单的问题。 我有一个EditText对象列表,每行一个。
当用户长按EditText时,我需要显示键盘。 当用户长按,然后我调用这个方法:
private void setNameAsEditable (View rowView, boolean setToEditable) {
EditText textView = (EditText) rowView
.findViewById(R.id.edittext_name);
textView.setFocusableInTouchMode(setToEditable);
textView.setFocusable(setToEditable);
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(textView, InputMethodManager.SHOW_IMPLICIT);
}
edittext变为可编辑状态(下划线和光标出现,如下所示)
但键盘没有出现。
我尝试了各种解决方案从stackoverflow(像这个EditText不显示虚拟键盘),但徒劳无功。
我甚至尝试过
this.getWindow().setSoftInputMode ( WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
只要用户长按EditText,我就想让软键盘出现。 有人可以帮忙吗?
试试吧,对我来说它工作正常。
et =(EditText) findViewById(R.id.edittext_name);
imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
et.setText("hide key board");
et.setFocusable(false);
et.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
et.setFocusableInTouchMode(true);
imm.showSoftInput(et, 0);
et.setText("show key board long pressed");
return false;
}
});
这是最后的工作(阿米特的回答+泰米兰的答案)非常感谢!
private void setNameAsEditable (View rowView, boolean setToEditable) {
EditText textView = (EditText) rowView
.findViewById(R.id.edittext_name);
textView.setFocusableInTouchMode(setToEditable);
textView.setFocusable(setToEditable);
InputMethodManager imm = (InputMethodManager) getContext().getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(textView.getWindowToken(), 0);
if (setToEditable) {
textView.requestFocus();
imm.showSoftInput(textView, 0);
}
}
EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
链接地址: http://www.djcxy.com/p/93327.html