ScrollView 里的 EditText 与输入法的用例

情景是这样的:

  1. 我希望页面可以滚动,因为长页面,内容多,必须滚动来满足不同手机的显示
  2. 点击 EditText 输入法弹出来,并将布局顶起来,并且EditText有足够的显示空间
  3. 进入页面时,输入法不能自动弹出来.

解决方案:

1. 用 Scrollview 满足情景里的第一个需求
2. 使用android:windowSoftInputMode="adjustResize"让布局被顶高,满足第二个需求
3. 在Activity里配置

<activity
        android:name="com.didikee.Test"
        android:configChanges="keyboard|keyboardHidden"
        android:windowSoftInputMode="stateAlwaysHidden|adjustResize" >
    </activity>

stateAlwaysHidden 与 adjustResize 连用即可实现.

会出现的bug

输入法弹出来后,取消输入法,输入法的会"占位"(即占用之前位置,可能显示白色或者黑色)

解决:

Scrollview 的宽高 和父Layout的宽高设为 "match_parent"代替 "wrap_content"即可.

原因:

布局里面的如果有listview或者类似的控件,软键盘上移的时候在adjustResize模式下会把根layout的高度修改
成软键盘之上,这时列表会被挤上去,但是软键盘还原后layout的高度还原的时候列表高度不会改变,就留白了
这时候把你的layout的高度设置成 match_parent 就好了.
时间: 2024-12-29 10:39:05

ScrollView 里的 EditText 与输入法的用例的相关文章

android之ScrollView里嵌套ListView(转)

hi,大家好,研究完ScrollView嵌套ScrollView之后,本人突然又想研究ScrollView里嵌套ListView了.如果还不知道ScrollView嵌套ScrollView是怎么实现的可以参考http://www.eoeandroid.com/thread-240709-1-1.html在上篇文章当中其实我没有怎么把原理讲清楚,只是上了原代码,而其实ScrollView里套ScrollView和ScrollView里套ListView是同一个道理的. 按常理,ScrollView

关于 ScrollView 中嵌套 EditText,输入多行会使整体滚动的问题

问题: ScrollView 中嵌套 EditText,在 EditText 中输入多行,会使 ScrollView 整体滚动.如果下方内容较长,会将 EditText 顶上去,体验不好. 解决: 监听键盘的弹出和收起,在弹出时,移除 EditText 下方的所有 View,使 ScrollView 没有滚动空间:在键盘收起时,将移除的 View 重新添加回来. 注意两个问题: 在 Activity 中,设置 this.getWindow().setSoftInputMode( WindowMa

ScrollView里嵌套ListView的冲突问题

这是最近遇到的一个问题,要在详情页面添加别人评论的,详情页面本身有很多信息,不能再一屏展示完所以用了ScrollView,由于评论有很多条所以这时候自然就用到ListView来展示,但是遇到了问题那就是ScrollView里的ListView只能显示一个条目.试过好几个方法来解决这个问题,最终找到了最简单的.自定义实现ListView. public class ListviewNoScroll extends ListView { public ListviewNoScroll(Context

EditText的输入法显示、隐藏和AlertDialog中的EditText无法调出输入法的问题

很好用的隐藏和显示输入法,因为dialog中自定义的EditText显示输入法的问题弄了我好长时间,特此将代码拷贝下来,顺带说明下,在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题. EditText的输入法显示和隐藏 <pre name="code" class="java">private EditText mSearchEdit; mSearchEdit = (Edi

EditText切换输入法软件的enter按键,实现跳到下一个EditText或搜索等

首先,输入法软件的enter键其实是可以变的,可以变next,搜索等等 例如:实现一个登陆界面 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft=&

ScrollView内嵌EditText滚动事件冲突处理

开门见山!如果EditText内容过长,但控件高度有限的时候,在滑动内容的时候就会有滑动冲突了,处理方式是要先判断EditText内容是否过长,即可滚动时,设置父容器(即ScrollView)分发事件为关闭状态,否则为打开状态.附上相关代码: 判断EditText内容是否过长可滚动: public static boolean canVerticalScroll(EditText editText) {     // 滚动的距离     int scrollY = editText.getScr

如何获取listview里面的edittext或者RadioGroup的值,涉及到引发的混乱现象

最近要实现从数据库读数据,该数据对应listview的item布局里面的RadioButton值,并且item布局里面还有EditText的控件. 如何将每一条对应的listview对应值获取出来呢? 实现原理是在作为ArrayAdapter的参数的数据源对象(如数组,集合),举例: ArrayList<MyClass> arrayList = new ArrayList<MyClass>(); ArrayAdapter arrayAdapter = new ArrayAdapte

Android之ScrollView里嵌套ListView

ScrollView套ListView会存以下两个问题 1.里面的listView高度无法算出来,通常只能显示listview的其中一行 2.listview不能滚动 这里我用的是可展开的(ExpandableListView 解决问题一,如果ExpandableListView是的子项是用写死的布局文件来加载的,只要在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在其父ListView的ListItem中.但是要注意的是,子ListView的每个Item必

win10里如何在中文输入法里添加美国键盘

在控制面板打开“时钟.语言和区域”设置界面,选中“语言”设置   “语言”设置里点击“添加语言”   在添加语言设置里选择“英语”,并点击“打开”按钮,在“区域变量”设置页面里选择“英语(美国)” ,并点击“添加”按钮.   在“语言”设置页面选择“中文”,点击“下移”   在WIN搜索框里输入regedit并按回车键,打开注册表编辑器   在HKEY_CURRENT_USER\Keyboard Layout\Preload,修改“1”的键值为“00000804”   在Substitutes项