Android软键盘相关
来源:互联网 发布:淘宝官方企业店是什么 编辑:程序博客网 时间:2024/06/06 01:31
1.判断软键盘的显示隐藏状态
mParentLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
mParentLayout.getWindowVisibleDisplayFrame(r);
//r.top 是状态栏高度
int screenHeight = mParentLayout.getRootView().getHeight();
int softHeight = screenHeight - r.bottom;
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mAddImgLayout.getLayoutParams();
if (softHeight > 100) {//当输入法高度大于100判定为输入法打开了
layoutParams.setMargins(0, 0, 0, softHeight);
mAddImgLayout.setLayoutParams(layoutParams);
mDoneTv.setVisibility(View.VISIBLE);
mPickImglayout.setVisibility(View.INVISIBLE);
} else {//否则判断为输入法隐藏了
layoutParams.setMargins(0, 0, 0, 0);
mAddImgLayout.setLayoutParams(layoutParams);
mDoneTv.setVisibility(View.INVISIBLE);
mPickImglayout.setVisibility(View.VISIBLE);
}
}
});
2.手动显示隐藏软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘
3.弹出软键盘时,输入框置于软键盘的上面
android:windowSoftInputMode="adjustResize|stateHidden"
4.注意事项
获取软键盘的高度时需要考虑系统是否显示导航栏
4.1判断是否显示导航栏
//获取是否存在NavigationBarpublic static boolean checkDeviceHasNavigationBar(Context context) { boolean hasNavigationBar = false; Resources rs = context.getResources(); int id = rs.getIdentifier("config_showNavigationBar", "bool", "android"); if (id > 0) { hasNavigationBar = rs.getBoolean(id); } try { Class systemPropertiesClass = Class.forName("android.os.SystemProperties"); Method m = systemPropertiesClass.getMethod("get", String.class); String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys"); if ("1".equals(navBarOverride)) { hasNavigationBar = false; } else if ("0".equals(navBarOverride)) { hasNavigationBar = true; } } catch (Exception e) { } return hasNavigationBar;}
4.2 获取导航栏的高度 public static int getVirtualBarHeight(Context context) {
int vh = 0;
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
try {
@SuppressWarnings("rawtypes")
Class c = Class.forName("android.view.Display");
@SuppressWarnings("unchecked")
Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
method.invoke(display, dm);
vh = dm.heightPixels - display.getHeight();
} catch (Exception e) {
e.printStackTrace();
}
return vh;
}
- Android 软键盘相关
- Android 软键盘 相关
- android软键盘相关
- Android 软键盘相关
- Android软键盘相关
- android EditText软键盘相关操作
- Android开发之软键盘相关
- Android EditView与软键盘相关
- Android 软键盘 相关知识讲解
- Android学习之软键盘设置相关
- Android软键盘相关的知识
- Android 软键盘相关的知识点
- 软键盘相关问题
- 软键盘相关
- Android 软键盘的工作原理及相关操作
- Android中显示/隐藏软键盘的相关方法
- android 弹出软键盘相关坑的解决方法
- Android开发EditText弹出软键盘的相关使用
- 随笔2
- spring boot的配置与普通spring项目配置对比(一)
- centos7 二进制安装mysql5.6
- airflow源码分析之BashOperator
- 永久关闭linux防火墙 端口进程的查看
- Android软键盘相关
- easyUi的简单布局案例
- 经典算法100例 6 分解质因数
- SSH三个框架的知识点汇总
- 母版页(Master Pages)
- 快速搭建vim的python的集成环境
- git 撤销操作
- project euler 15 Lattice paths
- AOMEI OneKey Recovery Professional(傲梅一键恢复软件)官方注册版V1.6.1下载 | 含aomei onekey recovery key