扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在 Android 里我们是无法直接获取软键盘高度的,但是在某些场景下,我们又需要获取软键盘的高度。我们可以使用 ViewTreeObserver.OnGlobalLayoutListener 来监听窗口大小的变化,当软键盘弹出时,窗口高度会变小,使用原始窗口高度减去当前窗口高度,就可以得出软键盘的高度了。
东莞ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
一般我们在 Activity 的 onCreate() 方法中开始监听:
请注意当 Activity 被销毁的时候,一定要移除监听,否则就会产生内存泄漏:
通过以上方法可以实时监听软键盘的高度变化,特别是像有些输入法例如搜狗,可以随时切换拼音输入、手写输入,这个时候软键盘的高度都会发生变化。
除此之外,还可以通过该方法判断软键盘是否弹出。
你可以自己设定一个控件的高度,
android:layout_height="wrap_content"中,
“wrap_content”可以随意设定,你可以用全屏"match_parent"
也可以用数值来写,我一般使用 XX dp来使用指定的高度
先说正确的获取屏幕高度方式
使用以下的方法去获取获取应用的屏幕高度
此处通过 getMetrics() 获取的高度其实是去除了虚拟按键后的高度。所以和手机的实际屏幕高度可能有差异
getReaMetrics() 则是真正原始的屏幕尺寸
webview.addjavascriptinterface可以调用android代码
android可以获得屏幕高度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int height = dm.heightPixels//这个就是屏幕高度了。
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
这个就创立了一个接口名,叫“Android”,运行在WebView中的JS代码可以通过这个名字调用WebAppInterface类中的showToast()方法:
input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /
script type="text/javascript"
function showAndroidToast(toast)
{
Android.showToast(toast);
}
/script
在Android开发过程中,有时需要获取View绘制前的高度或者宽度,一种的可能情形是初始化的时候让某个View的Visible = Gone的,当触发某个事件的时候需要它显示并且希望有一些动画效果。
这时候就要获取这个View显示前即绘制前的宽度或者高度。原理很简单,View的绘制过程发生之前,会先执行onMeasure方法。那么就可以利用反射来获取需要的值。下面给出获取高度的代码,宽度同理。
private int getTargetHeight(View v) {
try {
Method m = v.getClass().getDeclaredMethod("onMeasure", int.class,
int.class);
m.setAccessible(true);
m.invoke(v, MeasureSpec.makeMeasureSpec(
((View) v.getParent()).getMeasuredWidth(),
MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(0,
MeasureSpec.UNSPECIFIED));
} catch (Exception e) {
}
return v.getMeasuredHeight();
}
拿到这个高度之后就可以做想做的动画效果或者是其他的事情了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流