Android有几种不同的键盘布局图

博客分类:
最近做聊天界面时,点击底部的EditTextView时弹出的键盘框把EditTextView给挡住了,显然不符合预期。查询资料发现了有如下三种解决方案:
在项目的AndroidManifest.xml文件中界面对应的里加入android:windowSoftInputMode="adjustPan"这样键盘就会覆盖屏幕。通过实践发现方法一并没有起作用,查询资料得知我的布局是RelativeLayout,底部菜单用了android:layout_alignParentBottom="true",因此方法一不起作用,故采用方法二。
在代码setContentView()之前加入:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
亲测有效,另外还有一种通用的方法:
把顶级的layout替换成ScrollView,或者说在顶级的Layout上面再加一层ScrollView的封装。这样就会把软键盘和输入框一起滚动了,软键盘会一直处于底部。
wosyingjun
浏览: 310527 次
来自: 杭州
浏览量:114308
找不到数据库初始化脚本
juvconan 写道./redis-trib命令建立集群时, ...
Sentinel集群的时候
master shutd ...
楼主什么时候更shiro权限啊
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'android中几种解决键盘挡住输入框的办法与原理 _达内Android培训
400-111-8989
android中几种解决键盘挡住输入框的办法与原理
在Android开发中,经常会遇到键盘挡住输入框的情况,比如登录界面或注册界面,弹出的软键盘把登录或注册按钮挡住了,用户必须把软键盘收起,才能点击相应按钮,这样的用户体验非常不好。像微信则直接把登录按钮做在输入框的上面,但有很多情况下,这经常满足不了需求。同时如果输入框特别多的情况下,点击输入时,当前输入框没被挡住,但是当前输入框下面的输入框却无法获取焦点,必须先把键盘收起,再去获取下面输入框焦点,这样用户体验也非常不好,那有什么办法呢?
下面对几种在开发中常用的方法进行总结:
方法一:windowSoftInputMode:adjustResize|adjustPan
主要实现方法:
在AndroidManifest.xml对应的Activity里添加
Android:windowSoftInputMode=”adjustPan”或是android:windowSoftInputMode=”adjustResize”属性
但使用这两种属性,我们可以总结以下几点:
1) 使用adjustPan, 如果需要输入的项比较多时,点击输入框,当前输入项会被顶到软键盘上方,但若当前输入框下面还有输入项时,却需要先收起键盘,再点击相应的输入项才能输入。这样操作太繁琐了,对于用户体验不大好;
2) adjustResize的使用,需要界面本身可显示的窗口内容能调整,如果不能,不起作用;
方法二:在界面最外层布局包裹ScrollView
1、只使用ScrollView
在相应界面的xml布局中,最外层添加一个ScrollView,不在AndroidMainfest.xml中设置任何android:windowSoftInputMode属性,此时点击输入框,输入框均不会被软键盘档住。即使当前输入框下方也有输入框,在键盘显示的情况下,也可以通过上下滑动界面来输入,而不用先隐藏键盘,点击下方输入框,再显示键盘输入。
2、ScrollView+adjustPan
我们再在该类的AndroidMainfest.xml中设置windowSoftInputMode属性为adjustPan
方法三:当键盘弹起时,让界面整体上移;键盘收起,让界面整体下移
使用场景:针对界面全屏或是沉浸式状态栏,输入框不会被键盘遮挡。主要用于一些登录界面,或是需要把界面整体都顶上去的场景。
方法四:监听Activity顶层View,判断软键盘是否弹起,对界面重新绘制
此方法的实现来自android中提出的issue 5497 https://code.google.com/p/android/issues/detail?id=5497
使用场景:针对界面全屏或是沉浸式状态栏,界面包含比较多输入框,界面即使包裹了一层ScrollView,在键盘显示时,当前输入框下面的输入不能通过上下滑动界面来输入。
下面对上面几种方法进行对比:
&&& 方法一:优点:使用简单,只需在Activity的AndroidMainfest.xml中设置windowSoftInput属性即可。
&&& 注意点:adjustResize属性必须要界面大小可以自身改变;
&&& 缺点:当输入框比较多时,当前输入框下方的输入框会初键盘挡住,须收起键盘再进入输入;使用adjustPan,输入框较多时,因它是把界面当成一个整体,只会显示一屏的高度,会把ActionBar顶上去。
&&& 方法二:优点:使用简单,只需在Activity的最外层布局包裹一个ScrollView即可。
&&& 注意点:不可使用adjustPan属性,否则ScrollView失效;
&&& 缺点:对于全屏时,在键盘显示时,无法上下滑动界面达到输入的目的;
&&& 方法三:优点:可以解决全屏时,键盘挡入按钮问题。
&&& 缺点:只要有此需求的Activity均需要获取到最外层控件和最后一个控件,监测键盘是否弹出,再调用控件的scrollTo方法对界面整体上移或是下移。代码冗余。
&&& 方法四:优点:可以解决全屏时,键盘挡入输入框问题。只需要写一个全局类,其他有需求的界面直接在onCreate方法里调用此类的全局方法,即可。
&&& 缺点:多用了一个类。
综上所述:
1) 当输入框比较少时,界面只有一个输入框时,可以通过方法一设置adjustPan;
2) 如果对于非全屏/非沉浸式状态栏需求,只需要使用方法二即可;
3) 如果全屏全屏/沉浸式状态栏界面只有一个类有键盘挡入输入框需求,可使用方法三;
4) 如果大部分界面均使用全屏或沉浸式状态栏,且有此需求,则选择方法四更恰当。
android 6.0指纹识别开发
在Fragment的学习中,我们在了解Fragment设计的原理时,举了一个类似新闻的例子。在平板运行上时,展示如下图的左侧部分;在手机上运行时,展示如下图的右侧部分。
在平时开发android过程中,我们都是直接使用系统自带的UI模板,不知道有没有朋友想过,当你要修改某样东西的时候,是不是大部分都要进行修改呢?这样的话工作量就大了。下面我们以一个标题栏TopBar来为大家讲解如何自定义一个UI模板
作为一位Android技术总监,应该做哪些事情?如果是你,你将会将面临做哪些?作为现在的你有想过吗?
Copyright (C)
Tedu.cn All Rights Reserved 京ICP备号-56 版权所有
选择城市和中心
达内北京亦庄大学生实训基地
达内北京网络营销中心
达内北京会计中心Android软键盘弹出时布局问题 - AndroidSolo - 博客园
随笔 - 16, 文章 - 14, 评论 - 12, 引用 - 0
& & & & 最近项目需要做一个类似聊天室的模块,基于Socket实现的,这部分稍后一段时间再做总结,功能上的相关点都实现了小例子也做出来了,最后发现一个比较腻歪的问题就是软键盘弹出时总是会把标题&挤出&屏幕,(无论标题是写在布局中还是仿照theme的方式添加到style中),输入时有失观赏如下图:
& & & & 隐隐感觉之前项目一直有类似问题,只不过一般只在登陆界面,无伤大雅,用户输入后一掠而过,可以忽略,但这个页面这么处理确实不太美观。
& & & & 查了下此类问题大致两种思路解决:
& & & & 一、调整布局在底层使用ScrollView组件,将需要固定的布局(标题)写在Scrollview之外。
& & & & 二、在manifest配置文件中设置Activity属性。
& & & & 第一种方法未做尝试,可行性有待定论,下面主要说下第二种:
& & &&&activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,有个属性设置android:windowSoftInputMode,这个属性能影响两件事情:
& & &&&1、当有焦点产生时,软键盘是隐藏还是显示
& & &&&2、是否减少活动主窗口大小以便腾出空间放软键盘
&& & &&&它的设置必须是下面列表中的一个值,或一个&state&&值加一个&adjust&&值的组合。在任一组设置多个值&&多个&state&&values,例如&mdash有未定义的结果。各个值之间用|分开。例如:
& & &&&&activity android:windowSoftInputMode="stateVisible|adjustResize". . . &
& & &&&在这设置的值(除"stateUnspecified"和"adjustUnspecified"以外)将覆盖在主题中设置的值
& & &&&各值的含义:
& & &&&stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
& & &&&stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
& & &&&stateHidden:用户选择activity时,软键盘总是被隐藏
& & &&&stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
& & &&&stateVisible:软键盘通常是可见的
& & &&&stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
& & &&&adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
& & &&&adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间(可以显示全部屏幕)
& & &&&adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分(软键盘会遮挡屏幕)
& & & &下面是其中两个属性的效果图:
& & & &1.adjustResize这种也是想要达到的效果
& 2.adjustPan,这个属性偏于以软键盘为重点}

我要回帖

更多关于 第二种键盘布局 的文章

更多推荐

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

点击添加站长微信