继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

解决ListView中Item和Item中控件的关系

饮歌长啸
关注TA
已关注
手记 188
粉丝 46
获赞 152

默认情况下,ListView中适配器为BaseAdapter为例,默认情况下Item点击之后没有任何效果,原因是在点击Item的时候获取的焦点是子控件,为了解决这问题只需要在Item的根布局写上 android:descendantFocusability=""

beforeDescendants:ViewGroup会优先与子控件获取焦点

afterDescendants:VIewGroup会在子控件不需要获取的焦点的时候获取焦点

blocksDescendants:ViewGroup会覆盖子控件而获取焦点

经过测试,当不设置或者设置为beforeDescendants或afterDescendants的时候,只需要将子控件的android:focusable="false"设置为false即可实现,更简便的方法就是设置blocksDescendants即可。

注: lv.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});

此事件在触屏手机上不适用,只有在硬键盘的模拟器上才能触发。(模拟器打开硬键盘的方法在.android/avd/iPhone.avd/config.ini配置文件将hw.dPad置为yes即可)

原文链接:http://www.apkbus.com/blog-523232-59358.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP