Android 输入法弹出框挡住界面问题

在Android开发中,经常遇到点击输入框输入内容时,虚拟键盘弹出挡住了底下的按钮,如登录界面,弹出虚拟键盘后,挡住了登录按钮。要实现如微博这样的效果下面的选择“照片、@、#”等一排工具栏,一直会在输入框上边,这样就能随时显示工具栏了。

要实现这样的功能很简单,有以下几种方法:

1、在相应界面的Layout布局中,最外层添加一个ScrollView,然后在Activity中,点击输入框时,让屏幕直接上移到底端。

private Handler mHandler = new Handler();


   // 这里必须要给一个延迟,如果不加延迟则没有效果
   mHandler.postDelayed(new Runnable() {

    @Override
    public void run() {
     // 将ScrollView滚动到底
     mScrollView.fullScroll(View.FOCUS_DOWN);
    }
   }, 10);

 

2、在AndroidManifest.xml对应的Activity里添加
android:windowSoftInputMode="stateHidden|adjustResize"这个属性,但需要注意以下几点,我也是在另外一篇文章中看到的,要不就不会不起作用。

(1)使用adjustResize属性是 如果界面中没有滚动条 需要添加一个滚动条scrollview包裹所有内容,保证resize后能滚动显示显示不下的内容
(2)全屏fullscreen模式时 adjustResize属性失效(这一点搞了我一下午),属于是一个bug,只能使用adjustPan 来设置焦点

所以类中不能设定requestWindowFeature(Window.FEATURE_NO_TITLE);
(3)全屏fullscreen模式时 webview adjustPan 偶尔也会失效。

最后我实现的效果和上面微博图片类似

 

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

潇潇凤儿

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值