安卓界面虚拟键盘把布局顶上去弹出下面布局怎么顶上去

& & &界面需要,找到了一种不需要去设置:oftInputMode属性的解决keyboard和layout不适问题& & &有关设置android:windowSoftInputMode的资料,可自行。& & &我的方法就是,将xml文件的根布局设置成ScrollView,将之前的布局嵌套在里面就行了,不需要去设置以上的任何属性& & &在中间没有控件显示的地方,使用view设置weight去占位置& & 下面给出我的xml布局& &&&ScrollView xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
tools:context="com.example.richedit.TestInputMethodActivity" &
&LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"&
&LinearLayout
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="#332423"&
&/LinearLayout&
&View android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/&
android:layout_width="match_parent"
android:layout_height="wrap_content"/&
android:layout_width="match_parent"
android:layout_height="wrap_content"/&
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/&
&RelativeLayout
android:layout_width="fill_parent"
android:layout_height="54dip"
android:background="@android:drawable/bottom_bar"&
android:id="@+id/manual_setup"
android:text="zuozuo"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:minWidth="100dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" /&
android:id="@+id/next"
android:text="youyou"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:minWidth="100dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" /&
&/RelativeLayout&
&/LinearLayout&&/ScrollView&&& &这里给出keyb弹出时和没弹出时的,很好的将底部栏顶了上去&&&&& & & & & &&移动web页面,input获取焦点弹出系统虚拟键盘时,挡住input,求解决方案?
移动web页面,inpu获取焦点弹出系统虚拟键盘时,挡住input,求解决方案?&br&&img src=&/f78fa9cdcbcf0a24dca030_b.png& data-rawwidth=&750& data-rawheight=&1334& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/f78fa9cdcbcf0a24dca030_r.png&&&img src=&/b4ea5c147cb38e39aa04_b.png& data-rawwidth=&750& data-rawheight=&1334& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/b4ea5c147cb38e39aa04_r.png&&
移动web页面,inpu获取焦点弹出系统虚拟键盘时,挡住input,求解决方案?…
resize的时候计算屏幕高度,修改input的定位。实际上很多系统在处理这个键盘弹出的时候各种各样,需要调试。。不过resize在手机上有各种问题。。还是focus吧
聚焦时动态计算,改变 input 的位置。弹出键盘肯定是对 input 触发了一些操作,肯定会有 focus、click 之类的事件抛出。其他回答中提到的 window resize 也可能会触发(要看安卓机器)。触发之后 scroll 一下或者计算下位置重新设置下应该就差不多了。键盘弹出来了之后,通常相当于窗口高度变低了。iOS 会自动滚动上去一段,安卓的表现就不一致了,页面高度变低了,又没有自动滚上去,下面的内容就会被截断了。至于 fixed 失效这个问题,就是比较麻烦的兼容性问题了,需要针对性处理。
前面的同志已经说得比较清楚了,最万金油的一种方法,js调节。或者是height弹性,然后onfocus动态调节。还有一种,input最好不置于height下50%。
当虚拟键盘弹出的时候,window的resize事件会被触发(至少我的Android手机是这样)问题里的input是使用position:fixed吗,如果是position: fixed,在resize触发时应该会自动调整位置吧。// 以下代码用于直接将文档流中的元素移动到视区内,Android5.0+有效(只测了5.0和5.1,其他未知),IOS没测过。element.scrollIntoView()
====================================================================监听input元素的focus事件,以及window的resize事件。因为focus事件将在resize事件前触发。在focus事件中,将获得焦点的input元素保存变量中。在resize事件中,获得浏览器可视区域的top和bottom。获得浏览器可视区域的位置:var viewTop = $(window).scrollTop(),
// 可视区域顶部
viewBottom = viewTop + window.innerHeight;
// 可视区域底部
// 不使用jQueryvar viewTop = document.body.scrollTop,
viewBottom = viewTop + window.innerHeight;
获得元素的在文档中的位置:var elementTop = $element.offset().top, // $element是保存的input
elementBottom = elementTop + $element.height();
// 不使用jQuery/* 获得元素的位置信息 */
var getElementPosition = function(elem) {
var defaultRect = {top: 0, left: 0};
var rect = (elem.getBoundingClientRect && elem.getBoundingClientRect()) || defaultRect;
var ret = {
top: rect.top + document.body.scrollTop,
left: rect.left + document.body.scrollLeft
return ret;
var elementTop = getElementPosition(element).top, // 元素顶部位置
elementBottom = elementTop + element.clientHeight; // 元素底部位置
// 小结一下document.body.scrollTop获得当前body滚动的位置。getBoundingClientRect()获得element相对于viewport的位置从上面的代码中看到其实:判断元素是否在可视区域内,直接使用element.getBoundingClientRect()就好(* ̄? ̄*) 调整视窗位置$(window).scrollTop(value); // 调整value
// 不使用jQuerywindow.scrollTo(0, value); // 调整value
调整到想要的效果。我的Android手机上,当input获得焦点的时候,浏览器好像会自动移动input到可视区域内。_(:з」∠)_
最后的解决方案是好input聚焦时,控制滚动条位置,控制动作必须延迟执行,虚拟键盘弹出动作是有时间过程的。
使用flex布局能解决这个问题!codepen上做得demo:自己在ipad和小米note上自测没问题。
这种wap聊天室把我坑得够惨,我用fixed布局,发现问题有无数,于是改成了flex和box布局,用各种手机和独立浏览器测试了都没有问题,然后放在我们公司的app里一测,又挡住了、、、app里的虚拟键盘的表现就好像是个z-index无数大的fixed元素盖在了页面上,这特么让我如何是好?万般无奈之下只能改方案,点击输入框的时候,用一个大的textarea覆盖在整个页面上。。。为何前端如此之苦,为何要针对那么多手机进行适配!!!为什么手机厂商没有一个统一的标准!!!为什么啊为什么!!!!
这是我近期对IOS上遇见类似问题的解决方法,安卓上还有特殊情况没处理这是在ios 还好的demoIOS键盘弹出fixed布局必定失效,各种凌乱,所以类似固定底部输入框的还是换个方式的好再就是页面上input被弹出的键盘挡住,IOS 是不会触发resize 还得用focus 触发位置计算,不过要注意,用第三方输入法的,IOS上输入发的弹出是有延迟的,在focus后,根本没办法监测,只能setTimeout,很是痛心啊,还有建议将元素移动到可视区域最好是整个页面CSS位移,因为页面不够高的时候安卓上滚动不了呢。
这个问题有没有一个解决方案,我现在做的一个手机端网页项目,在猎豹浏览器里遇到了版本问题,在4.16.1的版本下input标签被虚拟键盘挡住,window.resize事件没有触发,在4.13.1的版本里面input标签就向上移动了,并且window.resize事件也被触发,想知道知乎上面有没有哪位大牛能够提供解决input被遮挡的方案供我们使用,目前各种方法都使用了,但是找不到两全其美的方法
我的页面是在界面的右侧放置一个fiexd布局的抽屉式菜单,带搜索功能,当用户想输入时,触发手机键盘输入法,ios没有这个问题,,安卓的输入法会将我这个抽屉式菜单顶掉,,致使我的菜单回到右侧..bug出现....找了好几种办法都没能干掉输入法,,,最后还是选择延迟.5ms显示菜单,勉强解决问题...
已有帐号?
无法登录?
社交帐号登录<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&关于android系统弹出软键盘把界面顶上去的问题。。在线急等!
[问题点数:20分,结帖人fangext520]
关于android系统弹出软键盘把界面顶上去的问题。。在线急等!
[问题点数:20分,结帖人fangext520]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。安卓开发,软键盘弹出时底部菜单怎么上移
[问题点数:40分]
安卓开发,软键盘弹出时底部菜单怎么上移
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 安卓键盘 布局顶上去 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信