Android 软键盘 和 EditText 在使用中出现问题的解决之道

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITxiaodong/article/details/80256357

Android 软键盘

  • 软键盘的弹出
在 dialog 下:
getActivity().getWindow().getDecorView().postDelayed(new Runnable() {
     @Override
     public void run() {
         InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
         if (imm != null) {
             Log.e(TAG, "run: 显示软键盘");
             messageEt.setVisibility(View.VISIBLE);
             messageEt.requestFocus();
             imm.showSoftInput(messageEt, 0);
         }
     }
 }, 200);
  • 软键盘的关闭
在 dialog 下:
InputMethodManager imm1 = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
   if (imm1 != null) {
       View v = new View(getActivity());
       ViewGroup g1 = (ViewGroup)getActivity().getWindow().getDecorView();
       ViewGroup g2 = (ViewGroup)g1.getChildAt(0);
       g2.addView(v);
       imm1.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
  • 软键盘是否需要挤压窗口

    是:如何做?

    (1)可在 AndroidManifest.xml 对应的 Activity 里添加上这条属性:
    android:windowSoftInputMode="adjustPan|stateAlwaysVisible"
    (2)在 setContentView(R.layout.xxx); 前设置
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);

    否:如何做?

    ( 1 ) 可在 AndroidManifest.xml 对应的 Activity 里添加上这条属性:
    android:windowSoftInputMode="adjustResize|stateAlwaysVisible"
    (2)在 setContentView(R.layout.xxx); 前设置
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

  • 软键盘和沉浸式的问题
    方法1. scrollerView 包裹需要滚动的布局
    方法2. edittext 跟布局 设置 android:fitsSystemWindows="true",如果还有布局相关的问题再在上一层布局添加 android:fitsSystemWindows="true"

EditText

  1. 控制输入类型 可参考 —-> Android 键盘适配-中英文适配
    inputType="参数",这里注意使用number时不能输入小数点

  2. 改变下划线的粗细
    设置 background=@null
    然后在下方添加一个 view 布局 ,高度为下划线的高度,颜色为下划线的颜色

  3. 取消 editext 自动获取焦点
    解决之道:在EditText的父级控件中设置添加以下两个属性:

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

    这样,就把EditText默认的行为截断了!

参考:

Android 软键盘的全面解析,让你不再怕控件被遮盖
Android 键盘适配-中英文适配
彻底搞定 Android 开发中软键盘的常见问题
Android 手动显示和隐藏软键盘方法总结

阅读更多

扫码向博主提问

龙衣倩

买的到的知识都是不值钱的
  • 擅长领域:
  • Android
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页