最近项目快完工了,对于各种的细节也逐渐的关注起来了,这不,这几天就在弄怎么控制输入法的弹出与隐藏。。
其实这个问题说简单又不简单,就像一层纸,你能一下子捅破,你就出师了,看不破,就会弄得焦头烂额。
下面是一个api的地址,当然是中文的,英文的自己看sdk吧。
http://www.cnblogs.com/over140/archive/2011/03/04/1970517.html
农民伯伯的博客里面还有很多其它的中文api,特别是英语不怎么好滴,记得收藏哦。
对输入法的显示与隐藏
网上有很多说通过xml来控制的,但是我觉得效果都不怎么理想,所以,我一般都不用,直接在代码里面写的.
(第一次调用显示,再次调用则隐藏,如此反复),this指activity
复制代码
单独显示隐藏软键盘:
显示:
复制代码
隐藏:
复制代码
程序启动后,自动弹出软键盘,可以通过设置一个时间函数来实现,不能再onCreate里写:
复制代码
***************************************
默认焦点设置
有时候也要对intent的默认焦点进行设置,不至于在intent跳转的时候默认焦点(光标)在EditText上,导致进入intent就打开输入法,影响界面美观。
默认焦点的顺序是:从上倒下 从左到右第一个可以输入的控件作为焦点
可以使用:
复制代码
也可以:
在EditText前面放置一个看不到的LinearLayout,让他率先获取焦点:
复制代码
补充:
开发中,必不可少的会使用到文本框(EditText)来进行数据录入,也就会需要对输入法进行一些控制。
先看下LAYOUT定义文件中的和输入法有关的属性:
android:inputType
指定输入法的类型,int类型,可以用|选择多个。取值可以参考:android.text.InputType类。取值包括:text, textUri, phone,number,等。
android:imeOptions
指定输入法窗口中的回车键的功能,可选值为normal, actionNext,actionDone,actionSearch等。部分输入法对此的支持可能不够好。
当然我总结的还不是很完善,我也就不一一的列出来了,如果你在开发过程中遇到了什么问题,跟帖吧,我们一起讨论
其实这个问题说简单又不简单,就像一层纸,你能一下子捅破,你就出师了,看不破,就会弄得焦头烂额。
下面是一个api的地址,当然是中文的,英文的自己看sdk吧。
http://www.cnblogs.com/over140/archive/2011/03/04/1970517.html
农民伯伯的博客里面还有很多其它的中文api,特别是英语不怎么好滴,记得收藏哦。
对输入法的显示与隐藏
网上有很多说通过xml来控制的,但是我觉得效果都不怎么理想,所以,我一般都不用,直接在代码里面写的.
(第一次调用显示,再次调用则隐藏,如此反复),this指activity
- InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
- imm.showSoftInput(myview, InputMethodManager.SHOW_IMPLICIT);
显示:
- InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.showSoftInput(myview, 0);
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
- Timer timer = new Timer();
-
- timer.schedule(new TimerTask() {
- @Override public void run() {
- InputMethodManager imm = (InputMethodManager)this.getSystemService(INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
-
- Toast.makeText(chick.this, "show", Toast.LENGTH_SHORT).show();
- }
- }, 1000);
默认焦点设置
有时候也要对intent的默认焦点进行设置,不至于在intent跳转的时候默认焦点(光标)在EditText上,导致进入intent就打开输入法,影响界面美观。
默认焦点的顺序是:从上倒下 从左到右第一个可以输入的控件作为焦点
可以使用:
- button.setFocusable(true);
- button.requestFocus();
- button.setFocusableInTouchMode(true);
在EditText前面放置一个看不到的LinearLayout,让他率先获取焦点:
- <LinearLayout android:focusable="true" android:focusableInTouchMode="true" android:layout_width="0px" android:layout_height="0px"/>
开发中,必不可少的会使用到文本框(EditText)来进行数据录入,也就会需要对输入法进行一些控制。
先看下LAYOUT定义文件中的和输入法有关的属性:
android:inputType
指定输入法的类型,int类型,可以用|选择多个。取值可以参考:android.text.InputType类。取值包括:text, textUri, phone,number,等。
android:imeOptions
指定输入法窗口中的回车键的功能,可选值为normal, actionNext,actionDone,actionSearch等。部分输入法对此的支持可能不够好。
当然我总结的还不是很完善,我也就不一一的列出来了,如果你在开发过程中遇到了什么问题,跟帖吧,我们一起讨论