在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 偶尔也会失效。
最后我实现的效果和上面微博图片类似