android SoftKeypad 软键盘的问题
1,Eidtext这个控件默认是你点击了它获得焦点之后就会自动地弹出软键盘,前提是你在竖屏的时候。但横盘的时候,不会自动弹出弹出软键盘了。
模拟器横屏时默认是打开了键盘的所以就算你用代码来显示软键盘也是显示不出来的,而像真实的手机(有物理键盘(硬件盘)比如G1)就不一样了。可以通过sensor来把画面横屏而并没正在的将键盘打开时就可以通过代码来显示软键盘了。
2,问题在通过代码来使得软键盘显示与隐藏时可以写在某控件的onClick事件里来或者用timer来控制,若你直接在onCreate或onResume里面是不行的,从网上找来的理由说是:软件盘是要在所有view画完才能显示的。第一种情况:
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
- im.showSoftInput(tv, 0);
- }
- }
- tv.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- // TODO Auto-generated method stub
- InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
- if (im.showSoftInput(tv, InputMethodManager.SHOW_FORCED)) {
- System.out.println(" return is true fullscreenmode"
- + im.isFullscreenMode());
- } else {
- System.out.println(" return is not true");
- }}});
自定义软键盘中Enter键和其相应事件
SDK升级到1.5以后,当文本输入框(EditText及其子类)获得焦点后,会弹出系统自带的软键盘
为了实现一些自定义的功能,就稍微研究了下* 当layout中有多个EditText,把每个控件的android:singleLine的属性都被设置成true的情况下,软键盘的Enter键上的文字会变成“Next”,按下后下个EditText会自动获得焦点(实现了“Next”的功能);当最后一个控件获得焦点的时候,Enter键上的文字会变成“Done”,按下后软键盘会自动隐藏起来
* 把EditText的Ime Options属性设置成不同的值,Enter键上可以显示不同的文字或图案
actionNone : 回车键,按下后光标到下一行
actionGo : Go,
actionSearch : 一个放大镜
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框
(还有其他一些值可以设定,不过偷懒,没有看:-))
* 设置文本框的OnKeyListener,当keyCode = 66的时候,表明Enter键被按下,就可以编写自己希望的Action了