所谓的坑 就是焦点的夺取问题,包括在list view中使用Edittext,一般情况下都比较好解决,一下是我在项目中遇到的问题以及解决办法。
问题: 对于GridView与Edittext之间焦点的夺取
private Edittext et;
解决方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {}
这个是adapter里的方法,其中ViewGroup parent 就需要对它做处理,
当点击Editiext时候,监听OnFocusChangeListener(焦点改变的监听)方法,这里是处理Edittext焦点变化的时候你可以在里面做对应的操作。
最重要的是 当判断到点击的是Edittext的时候,需要这么一句话 et.requestFocus();强制Edittext获取焦点。当没有点击Edittext的时候需要把焦点还给父布局
也就是ViewGroup,此时需要parent.requestFocus();
了解这方面的话,会有思路很简单。
其实对于这种列表中使用Edittext,强烈建议使用recycleView来实现。很简单不用考虑焦点问题。具体大家可以试一试。
2018/1/18
昨天把项目中的gridview中嵌套的editext都换成了recyclerview了。代码简洁,而且逻辑还清晰。唯一遇到了一个不妥的地方,就在个别机型上面,我是在华为note2,8.0的系统上测试。仍然会出现焦点的问题,在其他的手机上都正常。对此也很好解决,就添加一句et.requestFocus即可;
另外若是对edittext的背景边框也需要随之改变,我这边试了下,需要用到et.postDelayed这个方法才能适配到所有机型。暂时就先记录一下