GridView中使用Edittext遇到的坑

所谓的坑 就是焦点的夺取问题,包括在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这个方法才能适配到所有机型。暂时就先记录一下



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值