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

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 手动显示和隐藏软键盘方法总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_龙衣

赏杯快乐水喝喝

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值