安卓输入框时布局上移

当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入。
解决办法:
方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
方法二:在项目的AndroidManifest.xml文件中界面对应的<activity>里加入android:windowSoftInputMode="stateVisible|adjustResize",这样会让屏幕整体上移。如果加上的是
                android:windowSoftInputMode="adjustPan"这样键盘就会覆盖屏幕。
方法三:把顶级的layout替换成ScrollView,或者说在顶级的Layout上面再加一层ScrollView的封装。这样就会把软键盘和输入框一起滚动了,软键盘会一直处于底部。

注:方法一和二应该是同一种方法,不过一个是在代码里实现一个是在xml文件里实现。可能会应为1.5和之前的版本不支持该方法。但是方法三是肯定没有问题的。

文主要介绍Android中如何解决输入法键盘和activity页面遮挡的问题。
 
总结:
不希望遮挡设置activity属性android:windowSoftInputMode="adjustPan"
希望动态调整高度android:windowSoftInputMode="adjustResize"
 
问题:
我原来的问题是,对于腾讯微博的OAuth验证webView,弹出软键盘后,输入框上移就看不到输入框了,后发现Webview放到了 ScrollView中,将ScrollView改为LinearLayout问题解决了,不会在弹出软键盘后大幅滚动。不过下面还是详细介绍下软键盘和 activity页面遮挡的问题。
 
详细:
通常情况下如果我们在一个输入框输入内容,输入法键盘弹出时,activity自动设置高度,相当于在activity向上滚动了添加了输入法键盘的高 度。但有时可能淹没当前的输入框,如果希望输入法键盘弹出时不自动向上挤压activity,在activty中设置属性 android:windowSoftInputMode="adjustPan"即可,如下:
Java代码  
<activity android:name="testActivity"  
      android:windowSoftInputMode="adjustPan">  
设置属性为android:windowSoftInputMode="adjustResize"即可自动调整高度。
属性stateVisible表示默认显示输入法键盘,其他属性见:android:windowSoftInputMode
 
adjustPan同样存在问题,即可能需要关闭软键盘,定位被挡住的输入框,我希望的是介于adjustPan和adjustResize之间的解决方 案,即软键盘会对activity有一定挤压,但是焦点所在输入框始终会显示在屏幕上,有会的朋友欢迎留言分享,个人觉得可能的解决方案是new一个 LinearLayout,重写其中的
Java代码  
protected void onSizeChanged(int w, int h, int oldw, int oldh)  
方法,使得h参数动态变化达到效果,但较耗时,暂不想尝试了。

安卓输入框时布局上移

时间: 2024-10-17 12:26:57

安卓输入框时布局上移的相关文章

Android学习—解决界面弹出输入框时Tabhost上移的问题

在一个Tabhost页签界面,里面有多个EditText可以输入,但是每次文本框获得焦点弹出系统键盘时,位于底部的Tab被顶到中间去了,而且还会导致输入无效: 对于这种问题,可以通过下面的设置解决: 修改AndroidManifest.xml文件,在Tabhost所在的Activity中加入:android:windowSoftInputMode="adjustPan|stateVisible" 如下: <activity android:name="com.yag.U

移动端input获取焦点弹出输入框时影响fixed布局的问题

最近在做移动端项目的时候遇到的一个问题,在点击input获取焦点弹出输入框进行输入后,再次点击input输入框时,意外的事情发生了, 页面突然跳转到确定按钮跳转的页面了,刚开始以为是点击穿透导致的,朝着这个方向一直没有等到解决... 经过反复研究,发现第二次点击input 时,上面有一个隐形的按钮,这是怎么回事,确定按钮怎么就跑到上面去了呢,原来是由于最外层 使用了fixed布局,而第一次点击input获取焦点时,移动端默认弹出的输入框会将fixed布局的元素顶上去. 解决办法: 1.如果使用的

(转)安卓基本页面布局

布局: 在 android 中我们常用的布局方式有这么几种: 1.LinearLayout ( 线性布局 ) :(里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角) 线性布局分为水平线性和垂直线性二者的属性分别为: android:orientation= "horizontal android:orientation= "vertical" . 2.RelativeLayout ( 相对布局 ) : (里面可以放多个控件,但是一行只"   能放一

(转载)解决切换Fragment时布局重新实例化

解决切换Fragment时布局重新实例化 作者 instanceof 关注 2015.12.30 17:25* 字数 628 阅读 7616评论 17喜欢 23 关于Fragment 在这简单说一下Fragment,Fragment是Android 3.0以后才出现的,是为了适应不同的手机屏幕.平板和电视机的屏幕的.另外还有一个重要的原因,因为Activity的创建到销毁需要费时费内存,大量的Activity之间的跳转会造成堆栈饱满,引发程序崩溃或者无响应.为了解决这个问题,Fragment就产

安卓学习-界面-布局-LinearLayout

1.常用的xml属性 XML属性 相关方法 说明 android:baselineAligned setBaselineAligned 看不懂什么意思,这个是网上的解释 设置为False将阻止该布局管理器于他的子元素基线对其  android:divider setDividerDrawable(Drawable divider) LinearLayout好像没效果 设置垂直布局时2个按钮之间的分隔线 android:gravity setGravity 组件内部的对齐方式,有如下几种 top

Android解决多个Fragment切换时布局重新实例化问题

本文借鉴自:http://www.jianshu.com/p/d9143a92ad94 至于fragment的使用就不多说了,直奔主题, 布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pare

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

怎么让手机浏览器和微信焦点在文本输入框时不自动放大页面

方法一:禁止页面缩放 在head标签中加入以下代码 <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0, user-scalable=no"> content的解释 width=device-width //宽度等于设备屏幕宽度 initial-scale=1.0 //初始缩放比例 minimum-

android官方技术文档翻译——设计时布局属性

本文译自androd官方技术文档<Designtime Layout Attributes>:http://tools.android.com/tips/layout-designtime-attributes. 本文地址:http://blog.csdn.net/maosidiaoxian/article/details/41510581.转载请注明出处.翻译如有错讹,敬请指正. 设计时布局属性 在 Android Studio 0.2.11 版本中,布局渲染(用于布局编辑器以及XML编辑器