关于android textview,edittext,导致界面的卡顿

来源:互联网 发布:java视频点播系统源码 编辑:程序博客网 时间:2024/05/17 07:05

      我们在平时使用textview和edittextview的时候总是很随意的编写它相应的xml,但是当你的界面中存在滑动之类的效果的时候如果你不注意,你可能会发现你的界面居然有时候会有很卡的感觉,具体为什么卡,卡在哪里我们往往摸不着头脑,明明一点耗时的操作都没有,界面就多了一句,textview的settex函数,怎么就卡的不成样了,我们有时候会去怀疑android 的机制没苹果的好。其实具体原因还在于我们对控件不够了解。

     当一个界面里面存着类似scrollview或者listview这种控件的时候,我们需要滑动界面,而有时候滑动的界面都有相应的textview做说明,但是一滑动就发现界面特别卡。如果出现这种情况注意下你的xml对textview的宽高做设置的时候是不是设置成了wrapcontent,这个时候把他设置成fillparent就好了。当然有时候fillparent也不好用,因为如果你的textview的父view的长宽也是一个变化的值的话,也有可能导致卡顿。

    为什么使用wrapcontent后就会出现卡顿呢。思索后发现,滑动的时候其实listview或者scrollview都在对他的子view进行重绘。而在这个时候textview如果进行滑动的时候进行设置,比如利用textview进行修改内容。这个时候textview因为设置的内容长度发生了变化,所以导致跟父view的重绘,计算长宽发生了冲突。所以,为了避免这种冲突,textview的长宽必须是父view可计算的。所以要不你设置成fillparent要不你就固定一个长宽,这些都可以解决textview设置内容的时候导致界面的卡顿。总之在你没法查找到卡顿的根源的时候,去看看父view的长宽是不是收到了子view的影响。

   其实在网上很多关于listview滑动发生卡顿,其实总结的不是很完善,大部分是对listview设置成fillparent之类的说法,很多说getview不断的重复调用,跟这个也有关系。这些其实很多都是由于textview的长宽不是一个定值或者不可测导致。不信你把他们写死成一个值,你就会发现界面顺滑无比。

0 0