Android ListView中嵌套EditText,随着软件盘的出现和消失,EditText焦点和内容混乱的问题

来源:互联网 发布:淘宝改评价步骤 编辑:程序博客网 时间:2024/05/29 07:15

这是小小Android程序员的我,发表的第一篇博客,若有什么不足,请提出来,谢谢。若资料,代码涉嫌抄袭的,也请提出来,一定删改~~~

  • 今天项目里需要实现一个功能,就是类似于京东app评论那块。评论嘛,需要加上评论图片可以理解,但每张图片都要加上一个小的描述,感觉有点晕。当然心想这个可以有ScrollView
    • LinearLayout,动态添加ImagView + EditText嘛。然后不知哪个筋抽了,选了ListView + ImageView +
      EditText这种方法,恨不得抽自己一巴掌。。。当然,刚做出来效果很不错,当点击EditText,编写内容时,随着软键盘的弹出,消失,弹出,消失。。。尼玛,直接蒙了,好吧,当软键盘弹出和消失时,ListView的Adapter的getView会重绘。此时会出现两个问题:

1、当点击第一次,EditText有焦点嘛,随着软键盘出来,我们往往会直接输入内容,此时无法输入内容,因为EditText失去了焦点。

2、第一个问题,可以点两下EditText来解决,勉强勉强还能接受,那么这个就接受不了了,内容会消失,这尼玛就忍不了了,内容消失会死人的。

  • 为了解决这两个问题,百度了下,

http://blog.csdn.net/xiaanming/article/details/8536231

这篇博客的哥们说了下,看着感觉有点复杂,而且感觉有两个Bug,可能是我水平差,自己玩死自己,那就描述下我碰到的问题。

1、若ListView中有很多个EditText的话,当弹出软键盘后,输完第一个EditText,不缩软键盘回去,滚动ListView,滚到第二个EditText,再编写内容,好了,在第一个和第二个EditText之间来回滚动,当然两个距离要超出屏幕,并切换EditText焦点,期间软键盘不缩回去,那么两个EditText内容就会混乱。

2、写完最后一个EditText后,即使软键盘缩回去,最后一个焦点也不会消失。然后ListView上下滚动时,有时会因为最后一个EditText有焦点,而快速滚动最后一个item。(新的解决方法也解决不了,各位大神告知,如何解决)

    废话太多了,简单的解决办法是,参考国外大牛的思路~
holder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {                @Override                public void onFocusChange(View v, boolean hasFocus) {                    if (!hasFocus) {                        EditText etxt = (EditText) v;                        holder.editText.setText(etxt.getText().toString());                    }                }            });

没错,只需要添加这一段代码就行了,其他爱干嘛干嘛。本人拙略地分析下,为EditText设置焦点改变监听,当EditText失去焦点时,为它设置编写的内容,这样焦点就不会消失了~~太拙略了~

不管怎样,还是建议用scrollview搭配吧,毕竟这个没这么多事,当然,若添加很多很多,那就药丸。

当然,若想看ScrollView+LinearLayout这个解决方案,请看

http://blog.csdn.net/u012361647/article/details/50275641

本文为博主原创文章,未经博主允许不得转载。

0 0
原创粉丝点击