解决ListView中Item的子控件与Item点击事件冲突

经常会碰到在ListView中点击其中一个Item,会一并触发其子控件的点击事件,例如Item中的Button、ImageButton等,导致了点击Item中Button以外区域也会触发Button点击事件。在网上找了相关方法,这里记录下,亲测可行..

1、在Item的xml文件根元素中添加属性:android:descendantFocusability="blocksDescendants"

2、在冲突的子控件中添加属性:android:focusable="false"android:clickable="true"

网上有人说步骤2不需要也行,但在项目中试了不行,所以说步骤2还是需要的..

时间: 2024-10-01 07:15:24

解决ListView中Item的子控件与Item点击事件冲突的相关文章

Android嵌套滑动控件的冲突解决和ViewPager适配当前子控件高度不留空白的办法

最近项目有一个需求,需要多层可滑动控件的嵌套展示,demo效果如下,demo的下载地址在最后 咋一看好像挺简单啊,不就是一个ScrollView + ViewPager + ListView吗,我开始也这样觉得,也用的这种方式实现,结果始终和效果不对劲.这里总结几点问题: 两个或两个以上的滑动控件嵌套时,如果layout_height采用的是wrap_content会造成内部滑动控件的高度不能正确的计算,会导致内部滑动控件的高度始终为0,除非你用定值设置,比如300dp. 两个相同滑动方向的滑动

关于ListView中item与子控件抢夺焦点的解决方法

1.在开发中,listview可以说是我们使用最频繁的控件之一了,但是关于listview的各种问题也是很多.当我们使用自定义布局的Listview的时候,如果在item的布局文件里面存在Button或者是CheckBox等控件以及其子类控件的时候,经常会碰到各种控件的点击事件冲突的情况,那么我们如何来处理Listview中这种控件之间焦点冲突的情况呢? 这里有三种解决方案 1.将ListView中的Item布局中的子控件focusable属性设置为false2.在getView方法中设置but

解决TalbleView头部或底部子控件不显示问题

在自定义cell头部控件UITableViewHeaderFooterView(和自定义cell的方法几乎一样)时,出现了头部控件子控件不显示的问题. 注意和自定义cell的区别. .h文件 1 #import <UIKit/UIKit.h> 2 #import "CHModleGroup.h" 3 @interface HeaderView : UITableViewHeaderFooterView 4 @property (nonatomic, weak) UILabe

iOS 开发中中 textView 作为子控件点击输入文本,然后退出文本的方式

方式1. 使用当双击输入的时候弹出键盘同时,使用手势和通知监听键盘的方法实现 代码如下: 1. 监听键盘通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addTap) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@

ListVIew中包含水平滑动控件,左右滑动时容易触发上下滑动

自定义ListView import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.ListView; public class LiveCustomListView extends ListView { public LiveCustomListView(Context context) { super(context)

子控件根据父控件行宽自动换行---LineWrapLayout实现

一些带搜索功能的app,在搜索栏下面一般会提供一些关键字供用户选择. 也可以根据用户输入的文字,在下一次使用的时候该文字出现在常用关键字里面,只要轻轻一点就可以搜索了,无需再次输入. 关键字可以动态添加,这就要考虑换行的问题了 废话不多说,先上效果图: 先定义2个自定义属性 <declare-styleable name="linewarplayout"> <attr name="magin" format="integer"

ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决办法

fragment中添加了button和checkbox这些控件,此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应. 这时候就可以使用descendantFocusability来解决啦,API描述如下: android:descendantFocusability 该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系. 属性的值有三种: beforeDescendants:viewgroup会优先其子类控件而获取到焦点

我的Android进阶之旅------&gt;Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

开发中常常需要自己定义Listview,去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点. 如果你的自定义ListViewItem中有Button.ImageButton或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus.所以常常当点击item时变化的是子控件,item本身的点击没有响应. 这时候就可以使用descendan

我的Android进阶之旅------&amp;gt;Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

开发中经常须要自定义Listview,去继承BaseAdapter,在adapter中依照需求进行编写,问题就出现了,可能会发生点击每个item的时候没有反应,无法获取的焦点. 假设你的自己定义ListViewItem中有Button.ImageButton或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus. 所以经常当点击item时变化的是子控件,item本身的点击没有响应. 这时候就能够使用descendan