真正临时解决GridLayout下EditText宽度自动变长,超出容器屏幕宽度的问题

之前使用GridLayout做表单UI界面,一直没有问题。正常的界面如下。

但是今天在EditText中输入一个网址时,却发现界面变了形。如下图所示。

原来是网址太长,导致输入框宽度变长,超出了容器屏幕。把网址填写到设计视图上,看看效果。可以看到EditText的宽度变长了,超出了界面。而其超出的部分,宽度正好是左边第一列的宽度。

在网上搜寻了一些资料,有很多人也遇到类似问题,并且给出解决方案。但是经过测试,并没有解决这个问题。

比如这个问题:

GridLayout,子控件EditText内容超出屏幕:https://blog.csdn.net/tuikongbiao5337/article/details/54234981

会给出这些链接的解决办法:

GridLayout子控件超出屏幕的解决办法:https://www.jianshu.com/p/21a12c344a1c

关于Android GridLayou 的孩子控件宽度设置,超出屏幕:https://blog.csdn.net/Tomcat_lgs/article/details/47339893

上面的解决办法,仅仅只是解决在EditText本身的内容未超出宽度时的情况。比如,我之前一直没有问题,已经就是上面的设置方法。在EditText中输入字符较少,或者控制了EditText宽度时,都没有出现该问题。比如在手机号码输入框、验证码输入框,都做了最多字符长度限制。加了:android:maxLength="11",所以宽度一直没有问题。

今天输入网址,没有限制宽度,而且网址较长,才发现了这个问题。网上也有说把输入框改成多行输入,但EditText本身默认的singleLine属性就没有开启。

又研究了一遍EditText的各种属性值,最后采用ems这个属性,临时解决了。

只需要设置一下ems的值,看屏幕ems设置为多少时,恰好不超过屏幕。如下图,当我设置为16时,恰好不超过屏幕。设置为17就超过了。为谨慎起见,我设置为15。

现在的效果如下图所示。

之所以说是临时,是因为在不同的分辨率下,ems的取值肯定是不一样的。不过为谨慎起见,可以设置一个不大的值。反正设小了,界面上也不会缩,顶多是输入的内容会换行。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值