水平RecyclerView中Item中含有EditText问题

来源:互联网 发布:管家婆软件好用吗 编辑:程序博客网 时间:2024/06/16 08:16

最近使用竖直方向的RecyclerView中嵌套水平的RecyclerView,然后每个小的item都是一个EditText,然后让所有水平的RecyclerView联动,这样就形成了一个可以上下左右移动的并且可以填写的表格,满足产品需求;

完成后就发现了一个bug,点击屏幕外的edittext获取到焦点后水平的recyclerView就自动滚动到了头部;
首先做了这样的尝试,让edittext默认是没有焦点的,然后在item中点击后赋给edittext焦点,然后失败,证明了自动滚动确实跟EditText获取到了焦点有关系;
接着又有了尝试了,记录当前滑动的位置,监听EditText的焦点事件,在获取到焦点后再把RecyclerView拉回来,然后赋给EditText焦点,结果发现EditText先获取到焦点然后失去了焦点,拉回来后的EditText被赋予了焦点,然后再滚到头部,再拉回来,这样形成了个死循环,重复过程失败;
失败后郁郁寡欢。。。。。开始查看EditText和RexyclerView的源码,看的两眼昏花,犹如大海捞针,也没有任何的线索;打开StackOverFlow 输入RexyclerView EditText,只能看看大家有没有遇到这个问题,看了300多条发现有两个这样的问题跟我一样的问题的地址

结果都没有解决,而且事件过去久远;更加更加的绝望,该方案?自定义控件?放弃已经做好的?时间已经来不及。。。。

凌晨2点,擦,这个。。。这时候想到HorizontalScrollView会不会也有,demo试了果然,擦,新方向,在StackOverFlow键入HorizontalScrollView 和edittext,这样的问题就多了起来,接着一篇一篇撸,发现去掉Edittext的

<item name="android:gravity">center</item>

问题解决,但是没有了剧中的效果,这个也不能忍,继续探索,再加上这句完美解决

<item name="android:digits">0123456789.</item>

具体原因还没有探索,等项目上线后,在探究原因

阅读全文
2 0
原创粉丝点击