【原】Android中解决ActivityGroup+ViewPaper弹出输入法造成的布局混乱 - 紫夜

purplenight 2021-08-06 原文


【原】Android中解决ActivityGroup+ViewPaper弹出输入法造成的布局混乱


问题描述:

在使用ActivityGroup+ViewPaper方式制作可滑动的选项卡时,出现了点击文本框弹出输入法时,页面布局出现混乱的问题,如图所示:

 选项卡上有五个项,电梯、气瓶、人员、信息和更多。在底端展示。点击文本框获得焦点时,

底端的选项卡被输入法顶了上来。直接挡住了焦点输入框。无法正常输入。

 

解决过程:

乍看问题实在无从入手,输入法把控件顶起来的情况并不多。度娘搜索更是没有相关案例。下面进行排查:

  1. 从电梯和气瓶两个选项卡页面进入不会出现这个情况。起初考虑是否因为该页面有两个输入框导致,删除一个后,问题依旧,排除。
  2. 将气瓶的页面布局放入这里,同样出问题,排除布局文件原因。
  3. 保持人员的布局,将气瓶业务代码考入,无果,排除后台代码的原因。
  4. 将电梯或气瓶两个选项卡的页面放入人员这个页面,问题依旧,也就是说不是整个人员模块的问题。

问题进入瓶颈,不是人员模块的原因,但偏偏就是在人员这里加载才出现问题,思考半天,想起搭建整个选项卡布局时看到的一句话,ViewPaper会预先加载当前选项卡以及前一个和后一个选项卡的内容。奔着这句话,测试将人员后一项信息的页面换成气瓶的页面,重新进入人员,问题解决,布局不再出现问题。再进入信息页面,问题又出现,这时候可以肯定一个原因,电梯和气瓶因为右边都不是类似信息的页面,所以不出现问题,人员的后一个页面是信息页面,导致出现问题。

这时候终于把问题的焦点放在信息页面。他的布局和后面的更多类似,跟前三个布局大为不同。但是他们的布局为什么会影响前面的页面布局。继续排查,

通过删除信息页面的各个控件,终于发现ScrollView删除时,问题得到根本解决。但是删除一个控件这个页面无法正常显示了。

再一次百度,得知ScrollView在和一些控件使用,弹出输入法时可能会导致页面的布局出现异常。解决办法是屏蔽滚动条。懵了一下,原来布局混乱和滚动条有关,在ScrollView属性中增加android:scrollbars=”none”一句,最终问题得到根本的解决。

遗留思索:

经查找没有合理解释的是:ScrollView有时会影响页面输入法弹出导致布局出现问题,把它当做经验记下了,也许Android SDK在以后的更新中会得以解决。

 

总结:

很多问题网上不会有恰巧的解决方案,也许你就是第一个发现者。一开始谁也不会想到另一个页面的布局混乱是由其他页面的一个属性值的作用。举一反三,如果有类似这样的问题,也可以考虑是不是这种原因。解决问题需要从现象入手,一步步排查,看到问题本质东西,结合网上的资料,哪怕是一句不起眼的话,都可能给你解决问题找到灵感,将抽象的表面实体化,最终获得问题的解决方法,这是一个受益匪浅的经验。

发表于
2013-03-01 15:01 
紫夜 
阅读(431
评论(0
编辑 
收藏 
举报

 

版权声明:本文为purplenight原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/purplenight/articles/2938753.html

【原】Android中解决ActivityGroup+ViewPaper弹出输入法造成的布局混乱 - 紫夜的更多相关文章

  1. 软件工程结课作业 – 月妹-芒果君

    软件工程结课作业       这一学期的软件工程课接近尾声了,在复习理论知识的同时,更需要回顾和反思自己的学习 […]...

  2. HTML5期末大作业:游戏网站——网络游戏官网(悦世界) 6个页面 HTML+CSS+JavaScript ~ ~ 学生HTML个人网页作业作品下载

    HTML5期末大作业:游戏网站——网络游戏官网(悦世界) 6个页面 HTML+CSS+JavaScript ~ […]...

  3. pyechart.Geo — 基于中国地图数据显示

    pyechart 的Geo地图和时间轴Timeline使用 geo=Geo() 正标题,副标题,地图大小。 t […]...

  4. HashMap 源码详细分析

    一、概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 – HashMap。HashMap 最 […]...

  5. Mac App Store 为什么无法更新/下载 app,并且一直在转圈圈? – 小鬼豆

    Mac App Store 为什么无法更新/下载 app,并且一直在转圈圈? 如果你也遇到同样问题,可以试试我 […]...

  6. MySQL连表查询 – 梦想一步登天

    MySQL连表查询 一、连表查询之一对多表 1、首先创建两个表,并添加两个表的外键约束:人员表中的part_i […]...

  7. APNS IOS 消息推送 – 小何同學

    APNS IOS 消息推送 APNS会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里 […]...

  8. Python系列之 – 装饰器

    装饰器主要是用来对函数的操作,我们把定义的函数比作一个蛋糕的话,那么装饰器就是盒子,如果要吃蛋糕就先打开盒子。 […]...

随机推荐

  1. 细说并发编程-TPL

    本节导航 基本概念 并发编程 TPL 线程基础 windows为什么要支持线程 线程开销 CPU的发展 使用线 […]...

  2. JavaScript基础语法

    HTML :标记语言JavaScript :编程语言JavaScript发展历史(JS)1. 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款...

  3. 使用 Git和Github

    本地库初始化 git init 效果: 注意: .git 目录中存放的是本地库相关的子目录和文件,不要删除,也 […]...

  4. 初学者学Java常遇到的问题,我都给你回答了!

    前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.c […]...

  5. Java线程池 详解(图解) – 雪洗中关村

    Java线程池 详解(图解) 来源:www.jianshu.com/p/098819be088c   拓展: […]...

  6. CSS行高line-height属性理解及应用

    行高的概念看上去很简单——文字行的高度,其实,行高所涉及到的基础知识,对于今后理解其它属性也很重要。 大片密密 […]...

  7. 章节十六、4-TestNG高级功能–把测试方法分优先级、分组执行

    一、 把测试方法分优先级执行—–》(priority=索引) 1、新建一个testng […]...

  8. 还在被大妈灵魂拷问?使用Python轻松完成垃圾分类!

    目录 0 环境 1 引言 2 思路 3 图像分类 4 总结 0 环境 Python版本:3.6.8 系统版本: […]...

展开目录

目录导航