`
wenzongliang
  • 浏览: 466604 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

listView 不响应点击

 
阅读更多

在这里总结一下上面问题出现背景,item中有ImageButton,其余和平常使用listview一样的.当点击item时,onItemClickListener不起作用,ontouchListener中motionEvent.down消失了,事件只有点击item中的imagButton起作用。

    我们分析一下,当item出现了imageButton时,onItemClickListener不起作用,而在Touch中没有了down事件,首先说明onItemClickListener处理的和MotionEvent的down事件有关,然后问题的关键是这个down事件去了哪里呢?

    经过排查当item中有Checkable类以及Button类控件的时候,item的焦点会被子项获得,此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。从而导致onItemClickListener不起作用。

    已经得知了问题导致的原因就是因为item没有获得焦点,焦点被子项拿走了,那么怎么解决这类问题?本人认为处理的途径无非就是通过设置子项不能获得焦点,同时item要获得焦点。  

    这里采用的方法,要用到两个属性:

一:

android:focusable="false"

这个属性的具体介绍可以i看我上一篇文章,设置的目的在于使得某个控件不能获得焦点。

二:

android:descendantFocusability="blocksDescendants"

这个属性用来设置子项焦点的处理先后顺序。

android:descendantFocusability

Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.

Must be one of the following constant values.

android:beforeFocusability      viewgroup在子项处理之前获得焦点

android:afterFocusability            viewGroup在子项处理之后获得焦点

android:blocksFocusability          viewGroup阻止子项获得焦点

 

上面就是说子项焦点能力,定义了viewgroup和它的子元素处理的关系,这关系是指当一个view在获得焦点的时候,值必须是下面的常量之一。

       那么,我们肯定imageButton不能获得焦点,因此添加ImageButton属性 focusable="false",同时我们希望item中子项不能获得焦点,所以要把给android:descendantFocusability="blocksDescendants"属性添加到imageButton的父元素即可,简单的做可以设置item的根节点上。

分享到:
评论

相关推荐

    android 自定义listview无法响应点击事件OnItemClickListener

    然而,在自定义ListView时,开发者经常遇到一个常见问题:ListView的子项无法响应点击事件,即OnItemClickListener不生效。这个问题可能由多种原因引起,包括但不限于以下几个方面: 1. **布局问题**: - 确保每个...

    RecycleView实现横向的Listview并响应点击事件

    在这个场景中,我们将探讨如何使用RecyclerView来实现一个横向的ListView,并且响应用户的点击事件。 首先,我们要理解RecyclerView的基本结构。它由三部分组成:RecyclerView实例,Adapter和LayoutManager。...

    实现listview按钮响应

    本篇文章将详细讲解如何通过回调接口的方式来实现ListView中按钮的点击响应。 首先,我们需要理解ListView的工作原理。ListView采用复用视图(ViewHolder)的方式来提高滚动性能。这意味着,当用户滚动ListView时,...

    在Activity中响应ListView内部按钮的点击事件

    本篇文章将详细讲解如何在Activity中响应ListView内部按钮的点击事件,主要涉及的知识点包括:接口回调、ListView的适配器(Adapter)机制以及事件处理。 首先,我们理解ListView的工作原理。ListView通过Adapter将...

    完美解决ListView内部嵌套GridView导致各种异常,无法点击的问题

    完美解决ListView内部嵌套GridView导致各种异常,无法点击的问题,包含遇到的问题可能有:1、gridview显示不全。无法占满。2、listView点击item点击事件无效 3、GridView点击事件无效。4、假如GridView每行显示3个。...

    Android-ListView中嵌套(ListView)控件兼容问题

    例如,当在父`ListView`中的每一项内嵌套一个子`ListView`时,可能会发现父`ListView`的`OnItemClickListener`不再响应点击事件。这给开发者带来了不小的挑战。 #### 原因分析 这种现象的发生主要是因为子`...

    android 解决ScrollView和listView嵌套冲突问题(保证在ScrollView中滑动listView只响应listView的滑动)

    在Android开发中,ScrollView和ListView的嵌套是一个常见的需求,但同时也伴随着许多技术挑战,主要问题在于两者都具有滚动功能,导致冲突,使得用户在滚动时可能会遇到不确定的行为。本篇将详细介绍如何解决这种...

    ListView中嵌入Button ,ListView的item与Button的click事件分别被响应,同时还实现了类似Digg的item点击效果

    本示例中,我们将探讨如何在ListView中嵌入Button,并处理Button的点击事件,同时确保ListView item自身的点击事件也被正确响应。此外,我们还将实现一种类似Digg网站的点击效果,即当用户点击item时,其视觉表现会...

    listview响应优先

    2. **ListView的响应**:为了使`ListView`能够响应点击事件,必须确保其子视图不拦截点击事件。这可以通过设置子视图的`focusable`属性来实现。 #### 三、解决方案 接下来介绍几种常见的解决方案,以确保`ListView...

    listView上增加button点击事件

    但这样又会导致Button无法响应点击。更优雅的解决方案是,通过判断点击位置来区分是Button还是ListView被点击: ```java listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override ...

    ListView的setOnItemClickListener点击无效问题

    然而,开发者们经常遇到的一个问题是设置的`setOnItemClickListener`无法正常响应点击事件。本文将深入探讨这个问题,并提供解决方案。 首先,我们要理解ListView的工作原理。ListView通过复用Item视图(ViewHolder...

    ListView点击展开与隐藏

    通过查看和分析这个示例,你可以更深入地学习如何实现ListView的点击展开与隐藏功能,以及如何处理焦点和事件响应。建议下载这个项目,一步步跟随代码去理解和实践,这将有助于提升你的Android开发技能。

    045集-ListView列表项点击事件

    在ListView中,如果子视图(如ImageView或TextView)也需要响应点击,你需要确保点击事件不会被子视图捕获,而是正确地传递到ListView。 6. **选择模式**:ListView还支持多种选择模式,如单选(CHOICE_MODE_SINGLE...

    listview两个点击时间的处理demo

    这个“listview两个点击事件”的demo展示了如何在ListView的Item内处理多个点击事件,这在实际应用中非常常见,比如在电商应用中,一个商品列表项可能需要同时响应查看商品详情和加入购物车的操作。通过这种方式,...

    点击button动态加载listView

    总之,“点击button动态加载listView”是一种实用的技术,它可以帮助你构建响应快速、资源利用率高的Android应用。通过理解并掌握这一技术,你可以更好地处理大量数据的显示,提升用户在使用应用时的流畅度。

    Android Listview 按钮点击状态错乱之解决方法

    这个问题通常表现为点击一个列表项中的按钮后,显示的是其他列表项按钮的状态,或者是点击反馈不准确。本文将深入探讨这个问题的原因,并提供解决方案。 首先,我们要理解为什么会出现这种现象。ListView的复用机制...

    SlidingMenu+ViewPage+ListView嵌套(类似网易 ) ListView点击事件失效冲突问题解决

    7. **设置`clickable`和`focusable`为false**:对于不需要响应点击的`ViewPager`页面,可以设置它们的`clickable`和`focusable`属性为`false`,这样不会捕获点击事件。 以上策略可以帮助开发者有效地解决`ListView`...

    dialog中嵌套listview,并响应每一行的单击事件

    如标题,dialog中嵌套listview,并响应每一行的单击事件。测试的过程中,发现如果listview里面有radiobutton控件的话,listview的item无法点击的问题。 亲们,如果一定要这样做的话,用TextChecked控件代替...

    WINFORM实现进程信息的查看,listview,点击,右键,右键菜单

    本文将深入探讨如何使用WinForm来实现进程信息的查看,包括如何利用ListView显示进程,响应用户的点击事件,以及创建和使用右键菜单。 首先,我们需要获取系统中的进程信息。在C#中,我们可以使用System....

Global site tag (gtag.js) - Google Analytics