【原】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. 完整后端开发流程 – 乘着风去破浪

    完整后端开发流程 2018-05-27 11:36  乘着风去破浪  阅读(6574)  评论(0)  编辑  […]...

  2. 格式化代码(Eclipse 格式化代码块快捷键:Ctrl+Shift+F) – edda_huang

    格式化代码(Eclipse 格式化代码块快捷键:Ctrl+Shift+F) 1.格式化java代码 :     […]...

  3. 2015 史考特(Scottrade)开户指南 + 招商银行香港一卡通汇款【图文教程】

    最近刚开始炒美股。总的来说分为两步:一是开户,即选一个美股券商开设股票交易账户;二是汇款注资,把人民币换成美元 […]...

  4. 分布式任务调度框架 Azkaban —— Flow 1.0 的使用

    一、简介 Azkaban 主要通过界面上传配置文件来进行任务的调度。它有两个重要的概念: Job: 你需要执行 […]...

  5. 你要的webstorm,点开即用的船新版本 – 107国道道长

    你要的webstorm,点开即用的船新版本 idea是香,本来用它来写写网页端是足够的,但感觉它插件多了变笨重 […]...

  6. 基于深度学习方法的dota2游戏数据分析与胜率预测(python3.6+keras框架实现) – 牛云杰

    基于深度学习方法的dota2游戏数据分析与胜率预测(python3.6+keras框架实现) 很久以前就有想过 […]...

  7. Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址 – 努力做一个伪程序员

    Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址 我们在客户端设置邮箱或者使用 PHP […]...

  8. ES(一): 架构及原理 – 天戈朱

    ES(一): 架构及原理 Posted on 2016-11-29 08:41  天戈朱  阅读(34468) […]...

随机推荐

  1. Python错误重试方法

    前言 Tenacity是一个 Apache 2.0授权的通用重试库,用 Python 编写,用于简化向几乎所有 […]...

  2. 学习Python的三种境界

    前言 王国维在《人间词话》中将读书分为了三种境界:“古今之成大事业、大学问者,必经过三种之境界:‘昨夜西风凋碧 […]...

  3. HTTP协议发展历史

    0.什么是HTTP? HTTP(HyperText Transfer Protocol): 超文本传输协议。是 […]...

  4. AtiveMQ初次连接的 http error:503 连接错误 Prolem accessing /.Reason : Service Unavailable

    503错误 说明是服务器内部的错误了 这是 为什么嫩  这是因为你的Linux虚拟机(我用的是centos版本 […]...

  5. 《我用》系列之—-2019年我抛弃了Mac笔记本,拥抱了ThinkPad

    2019年我抛弃了Mac笔记本,拥抱了ThinkPad   截止到2019年11月17日,苹果在每一条产品线上 […]...

  6. 系统架构-设计模式(适配器、观察者、代理、抽象工厂等)及架构模式(C/S、B/S、分布式、SOA、SaaS)(干货)

    博客园首页是需要分享干货的地方,今天早上写的《HRMS(人力资源管理系统)-从单机应用到SaaS应用-系统介绍 […]...

  7. 灵动电商开源系统之微信小程序端

      请扫描下方二维码体验 商用版小程序体验 除了上述开源版,相应商用版也已经上线,如需订购请联系QQ: 185 […]...

  8. netty 实现简单的rpc调用

    yls 2020/5/23 netty 实现简单rpc准备 使用netty传输java bean对象,可以使用 […]...

展开目录

目录导航