有的时候需要在界面一显示时就让输入框处于焦点状态,并且需要键盘弹出,方便用户输入。需要以下代码

在xml文件中editText设置两个属性

android:focusable="true"android:focusableInTouchMode="true"

显示键盘

InputMethodManager manager = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);manager.showSoftInput(edittext, 0);


有些人会在activity或者fragment的onCreate(或者onCreateView)函数中就去调用上面两行代码,发现并不起作用,这是因为在onCreate中或者其他声明周期函数(onStart,onResume等)中,该EditText还未被绘制出来,InputMethodManager还不能获取到该控件的焦点,所以键盘并不会显示,而且manager.showSoftInput函数返回false,告诉你键盘并未显示。所以只有当EditText完全被绘制出来了,才可以去获取焦点。

解决办法

edittext.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {      @Override      public void onGlobalLayout() {          InputMethodManager manager = (InputMethodManager) getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE);          manager.showSoftInput(edittext, 0);      }});

在该段代码中去监听edittext是否被绘制完毕,如果绘制完毕则调用onGlobalLayoutListener.onGlobalLayout函数,在该函数中去显示键盘,运行下,就发现键盘可以正常弹出啦。哈哈,完美


隐藏键盘:

如何隐藏一个Activity页面上的键盘:

private static void hideSoftInput(Activity actv){        if(actv.getCurrentFocus()!=null && actv.getCurrentFocus().getWindowToken()!=null) {            InputMethodManager manager = (InputMethodManager) actv.getSystemService(Context.INPUT_METHOD_SERVICE);            manager.hideSoftInputFromWindow(actv.getCurrentFocus().getWindowToken(), 0);        }    }



更多相关文章

  1. android camera(三):camera V4L2 FIMC
  2. android工具之TraceView学习笔记
  3. Android(安卓)深入理解 View 的绘制流程和机制
  4. 【Android】View绘制过程分析之draw
  5. android 键盘关闭/显示
  6. android 隐藏键盘 显示键盘
  7. Android线程间通信的Message机制
  8. 深入了解Android图形管道-part2
  9. 箭头函数的基础使用

随机推荐

  1. Android(安卓)获取局域网内网IP地址
  2. Android成长的故事——Android组件_ Text
  3. 【转载】Android(安卓)Bander设计与实现
  4. Android(安卓)Studio3.0配置Butterknife8
  5. Android(安卓)NDK&JNI开发之Native崩溃日
  6. Android(安卓)捕获错误日志 UncaughtExce
  7. Android(安卓)Gallery3d源码学习总结(二)—
  8. android开发之 Wifi的四个类
  9. Android(安卓)UI- 对话框 (AlertDialog &
  10. android仿微信实现欢迎界面、介绍界面及