1.控制进入界面时键盘的状态和界面布局(官方文档)
<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
Values set here (other than "stateUnspecified
" and"adjustUnspecified
") override values set in the theme.
stateUnspecified | 系统自己选择 |
stateUnchanged | 保持和上一个界面的键盘可见状态一样 |
stateHidden | 进入界面时,键盘隐藏 |
stateAlwaysHidden | 键盘总是隐藏 |
stateVisible | 进入界面时,键盘显示 |
stateAlwaysVisible | 键盘显示 |
adjustUnspecified | 布局有系统选择,有滑动控件时,adjustResize,反之选择adjustPan |
adjustResize | 布局自动调整,给键盘留出空间 |
adjustPan | 布局自会平移,不遮挡获得焦点的控件 |
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// 显示键盘
imm.showSoftInput(account, 0);
// 隐藏键盘
imm.hideSoftInputFromWindow(account.getWindowToken(), 0);
// 键盘显示时,隐藏;键盘隐藏时,显示
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_NOT_ALWAYS);
// 键盘是否打开
imm.isActive();
2.
效果:键盘弹出时,不遮挡登陆按钮,可以滑动
把输入框和登陆按钮用scrollView包住,在AndroidManifest.xml中设置该Activity
<activity android:windowSoftInputMode="stateVisible|adjustResize">
效果:键盘弹出时,自动滑动显示出登陆按钮
在上面的基础上,改写scrollView的onLayout方法
package hq.org.osaalert.view; import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; public class MyScrollView extends ScrollView { public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // TODO Auto-generated method stub super.onLayout(changed, l, t, r, b); this.fullScroll(ScrollView.FOCUS_DOWN); } }