我们在Android提供的EditText中单击的时候,会自动的弹出软键盘,其实对于软键盘的控制我们可以通过InputMethodManager这个类来实现。我们需要控制软键盘的方式就是两种一个是像EditText那样当发生onClick事件的时候出现软键盘,还有就是当打开某个程序的时候自动的弹出软键盘。

示例代码如下:

public class MainActivity extends Activity implements View.OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        LinearLayout layout = new LinearLayout(this);        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);        Button button = new Button(this);        button.setText("Hello GaoMatrix");        button.setOnClickListener(this);        layout.addView(button, layoutParams);        setContentView(layout);        /**         * 用一个定时器控制当打开这个Activity的时候就出现软键盘         */        Timer timer = new Timer();        timer.schedule(new TimerTask() {            @Override            public void run() {                InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);                inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);            }        }, 2000);    }    /**     * 当单击事件的时候触发显示软键盘     */    @Override    public void onClick(View v) {        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);        inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);    }}


这个InputMethodManager类里面的toggleSoftInput方法的API中的解释是: This method toggles the input method window display. If the input window is already displayed, it gets hidden. If not the input window will be displayed. 这个方法在界面上切换输入法的功能,如果输入法出于现实状态,就将他隐藏,如果处于隐藏状态,就显示输入法。 而对于第二中方式进入Activity就自动显示软键盘,在一个定时器中,也就是在一个线程中执行,只不过是延迟2秒执行,原因是在onCreate函数中Android程序未将屏幕绘制完成。


当然我们还可以单独控制软键盘的显示和隐藏

        //显示        InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);        imm.showSoftInput(v, 0);        //隐藏        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);


上述代码中的view是比如Button点击时事件的那个View,或者是Activity整个布局之类的Layout(经测试可以正常运行)


其他关于键盘的控制还有两个经常用到:
1. editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); //点击EditText时,不会弹出一个全屏输入窗口
2.editText.setInputType(InputType.TYPE_NULL); //点击EditText时,屏蔽软键盘




更多相关文章

  1. Android(安卓)Menu学习
  2. Android(安卓)手机软键盘的弹起和关闭的监听
  3. Android(安卓): 如何得到Activities栈顶的Activity名称
  4. Android横竖屏切换总结
  5. Android手动显示和隐藏软键盘方法总结
  6. 面试之Android五种布局
  7. Android(安卓)Edittext 开发常见问题总结(焦点、输入、键盘弹出等
  8. Android的快速开发框架 afinal
  9. android EditText中的inputType

随机推荐

  1. Android——intent分享图片到微信好友、
  2. android的ImageSwitcher和TextSwitcher
  3. android 自定义 radiobutton 文字颜色随
  4. Android 海贼王连连看游戏源码
  5. Android 解析imei
  6. Android Material Design常规使用
  7. android 测试
  8. 【Android】选项卡使用
  9. Android(安卓)webview HitTestResult识别
  10. Android Launcher3去除应用列表,二级菜单,