原文链接:http://blog.csdn.net/mr_liu_gege/article/details/53169359
拾人牙慧,感谢博主分享。试验了一下,确实有效果,收藏学习。

第一种情况:被键盘遮住的按钮没有位于布局的底部

代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:orientation="vertical"
  6. android:id="@+id/parent_ll">
  7. <EditText
  8. android:id="@+id/username"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:layout_marginTop="200dp"
  12. android:ems="10" >
  13. </EditText>
  14. <EditText
  15. android:id="@+id/userpwd"
  16. android:layout_width="match_parent"
  17. android:layout_height="wrap_content"
  18. android:layout_marginTop="30dp"
  19. android:ems="10"
  20. android:inputType="textPassword" />
  21. <Button
  22. android:id="@+id/btn"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:layout_gravity="center"
  26. android:layout_marginTop="30dp"
  27. android:text="Button" />
  28. </LinearLayout>
  1. public class MainActivity extends Activity {
  2. private Button btn;
  3. private LinearLayout parent_ll;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.layout_login);
  8. /*ScrollView mScrollView = (ScrollView)findViewById(R.id.scrollContent);
  9. mScrollView.setVerticalScrollBarEnabled(false);
  10. mScrollView.setHorizontalScrollBarEnabled(false);*/
  11. parent_ll=(LinearLayout) findViewById(R.id.parent_ll);
  12. btn=(Button) findViewById(R.id.btn);
  13. addLayoutListener(parent_ll, btn);
  14. }
  15. /**
  16. * 1、获取parentView在窗体的可视区域
  17. * 2、获取parentView在窗体的不可视区域高度
  18. * 3、判断不可视区域高度
  19. * 1、大于100:键盘显示 获取childView的窗体坐标
  20. * 算出parentView需要滚动的高度,使childView显示。
  21. * 2、小于100:键盘隐藏
  22. *
  23. * @param parentView 根布局
  24. * @param childView 需要显示的最下方View
  25. */
  26. public void addLayoutListener(final View parentView, final View childView) {
  27. parentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
  28. @Override
  29. public void onGlobalLayout() {
  30. Rect rect = new Rect();
  31. parentView.getWindowVisibleDisplayFrame(rect);
  32. int mainInvisibleHeight = parentView.getRootView().getHeight() - rect.bottom;
  33. if (mainInvisibleHeight > 100) {
  34. int[] location = new int[2];
  35. childView.getLocationInWindow(location);
  36. int srollHeight = (location[1] + childView.getHeight()) - rect.bottom;
  37. parentView.scrollTo(0, srollHeight);
  38. } else {
  39. parentView.scrollTo(0, 0);
  40. }
  41. }
  42. });
  43. }
  44. }

addLayoutListener() 这个方法是关键。

第二种情况:被键盘遮住的按钮位于布局的底部

父布局需要是Relativelayout,按钮需要alignParentBottom,可能清单文件还需要设置android:windowSoftInputMode

Android 软键盘顶起布局相关相关推荐

  1. android虚拟键盘挡住布局,让Android软键盘不遮挡布局

    在Android UI中,我们常常会使用EditText,比如在一个ScrollView中放置多个EditText,如下图: 带有edittext的scrollview.png 当用户点击这个Edit ...

  2. android软键盘顶部定义布局,Android 软键盘弹出时把原来布局顶上去的解决方法

    键盘弹出时,会将布局底部的导航条顶上去. 解决办法: 在mainfest.xml中,在和导航栏相关的activity中加: android:name=".filing.MainActivit ...

  3. android 软键盘弹出 布局上移动

    这是软件盘和actiivty主窗口抢空间造成的,需在AndroidManifest.xml里为activity配置windowSoftInputMode属性并为其选择属性值. 如下: <acti ...

  4. android键盘有缅甸文,外文翻译 - 有效的缅甸ANDROID软键盘的关键布局设计分析.doc...

    外文原文 EFFECTIVE MYANMAR KEY LAYOUT DESIGN ANALYZING FOR ANDROID SOFT KEYBOARD NANDAR PWINT OO Tutor U ...

  5. Android 软键盘弹出时把布局顶上去,控件乱套解决方法

    Android 软键盘弹出时把布局顶上去,控件乱套解决方法 参考文章: (1)Android 软键盘弹出时把布局顶上去,控件乱套解决方法 (2)https://www.cnblogs.com/zhuj ...

  6. Android 软键盘弹出时布局内指定内容上移实现及问题解决

    Android 软键盘弹出时布局内指定内容上移实现及问题解决 参考文章: (1)Android 软键盘弹出时布局内指定内容上移实现及问题解决 (2)https://www.cnblogs.com/as ...

  7. Android 软键盘弹出时把原来布局顶上去的解决方法

    Android 软键盘弹出时把原来布局顶上去的解决方法 参考文章: (1)Android 软键盘弹出时把原来布局顶上去的解决方法 (2)https://www.cnblogs.com/Joanna-Y ...

  8. Android软键盘手动显示、隐藏、布局上移和EditText上移

    主要实现:Android软键盘手动显示.隐藏.布局上移和EditText上移 AndroidManifest.xml <?xml version="1.0" encoding ...

  9. android 软键盘和布局的冲突

    最近公司在做一个项目是总是出现软键盘和布局的不兼容问题,这里我就随便记录下我自己查询得来的一些小知识: 一般来说解决软键盘的冲突有两种方法,一种是软键盘把布局文件顶上去,另一种是软键盘将布局文件给隐藏 ...

  10. android软键盘弹出底部有黑色闪出,vue移动端安卓软键盘弹出底部按钮顶起

    在做一个基于企业微信的h5移动页面时,当软键盘弹出时,底部fixed定位在ios上没事,安卓手机上,底部按钮会被顶起到软键盘,查看原应时由于软键盘顶起时,安卓设备的视图会变小.造成固定定位按钮呗顶起. ...

最新文章

  1. 人脸属性迁移学习笔记
  2. python、PyTorch图像读取与numpy转换
  3. APP元素事件操作API
  4. python下几种打开文件的方式
  5. java正则 环视_正则表达式之环视(java)
  6. WIN10 开启右键 命令提示符
  7. java uuid静态方法_Java UUID toString()方法与示例
  8. C语言 abort 函数 - C语言零基础入门教程
  9. MyBatis各个jar包的作用
  10. ie6的png24问题
  11. phpmailer 与 mail
  12. 将Matlab换成Pycharm风格
  13. 接口测试工具--Postman安装
  14. 【Adobe Illustrator 教程】4. 认识渐变工具
  15. 怎样在两台计算机之间建立硬盘共享,如何让两台电脑硬盘共享在一起
  16. YY一下淘宝商品模型
  17. 一次错综离奇的super调用的None参数super() argument 1 must be type, not None
  18. FastText学习笔记
  19. 二叉树的顺序存储和三种遍历(二)
  20. 【报告分享】数观食机|2020快手食品行业数据价值报告-磁力引擎-202103.pdf(附下载地址)

热门文章

  1. idou老师教你学Istio11 : 如何用Istio实现流量熔断
  2. PMBOK(第六版) 学习笔记 ——《第十三章 项目相关方管理》
  3. C语言及程序设计初级—分离整数与小数部分
  4. 3种常用的缓存读写策略
  5. 「职称」2022年度中高级职称线下申报材料组卷要求(下)
  6. 侦探系列-照片隐藏信息提取
  7. FWT快速沃尔什变换及其应用
  8. uniapp中uni.navigateTo传递变量
  9. 张江男曲折的出国梦_IT新闻_博客园
  10. windows10 添加图片查看器