`
zengyan2012
  • 浏览: 409816 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ListView Item 与子控件焦点问题

 
阅读更多

在项目中,item中有3个控件,其中有2个控件是可以正常获取到焦点,但是第三个点击的时候,却出发了Item的点击事件。

 

android:descendantFocusability   // 放在listview中的item的顶级布局上。

 

Constant            Value        Description

beforeDescendants 0    The ViewGroup will get focus before any of its descendants. //Item先获取到焦点

afterDescendants 1      The ViewGroup will get focus only if none of its descendants want it. //子控件获取到焦点--- 也就是item无法获取到焦点

blocksDescendants 2  The ViewGroup will block its descendants from receiving focus. //让子控件无法获取焦点 --事实证明子控件是可以获取到焦点的。

ListView默认情况

 

当item有焦点时,item上的button等子控件获取不到焦点;

当子控件有焦点时,item无焦点无法响应onItemClick事件

 

ViewGroup.FOCUS_AFTER_DESCENDANTS:表示item的子控件优先于item获得焦点;

ViewGroup.FOCUS_BEFORE_DESCENDANTS:表示item优先于其子控件获得焦点。

解决办法:

 

  1. listView.setOnItemSelectedListener(onItemSelectedListener);  
  2. private AdapterView.OnItemSelectedListener  onItemSelectedListener =   
  3.     new AdapterView.OnItemSelectedListener(){  
  4.     @Override  
  5.     public void onItemSelected(AdapterView<?> parent, View view,  
  6.             int position, long id) {  
  7.         //当此选中的item的子控件需要获得焦点时  
  8.         parent.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);  
  9.         //else parent.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);  
  10.     }  
  11.       
  12.     @Override  
  13.     public void onNothingSelected(AdapterView<?> parent) {  
  14.         parent.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);  
  15.     }  
  16. }  
分享到:
评论

相关推荐

    listview selector 选中时改变item 子控件 图片状态

    listview selector 选中时改变item 子控件 图片状态

    android 的listview 内部item的布局包含checkbox控件

    android 的listview 内部item的布局包含checkbox控件时,会遇到常见的问题:1.checkbox无法选择;2.选择的checkbox后滑动listview内容时会checkbox选择的值会刷新成原来状态值(即没选中);3.选择listview所有checkbox...

    android ListView抢夺焦点解决办法+显示多个不同类型item

    android ListView Button 等控件强行获取焦点导致 item监听无效的解决办法 ,利用ListView 显示多个不同类型的item

    listview基本用法

    ListView1.Items.Item[1].SubItems.GetText); //取得listview某行某列的值 Edit2.Text := listview1.Items[i].SubItems.strings[0]; //读第i行第2列 返回选中行所有子列值.是以回车符分开的,你还要从中剥离...

    Android 焦点可滑动的 自定义 ListView

    最近研究android的最常用的控件ListView,感觉挺有趣的,包括Listview的循环机制,item重用机制,上下滑动刷新机制,然后做了一个焦点可滑动的ListView,不知道大家看过或者用过Apple TV没有,Apple TV里面的焦点都...

    Android中ListView的item点击没有反应的解决方法

    如果stu_item.xml里面包括button或者checkbox等控件,默认情况下list的item会失去焦点,导致无法响应item的事件,最常用的解决办法是在stu_item.xml的布局文件中设置descendantFocusability属性。 该属性是当一个为...

    InplaceEditBoxLib:WPFMVVM控件,用于在其他元素(例如TreeViewItem或ListViewItem)上实现文本框(用例)

    WPF / MVVM控件,用于在其他元素(例如TreeViewItem或ListViewItem)之上实现文本框(用例:对显示的项目进行就地编辑) 用例:就地编辑 此项目中包含的就地编辑文本控件可以用作开发应用程序的基础,在该应用程序...

    Android自定义ListView单击事件失效的解决方法

    原因是item里面存在一些子控件,默认点击获取的焦点跑去子控件去了,点击失效。 解决办法: 在item的根目录加入android:descendantFocusability=”blocksDescendants” &lt;?xml version=1.0 encoding=utf-8?&gt; &...

    Android 中ListView点击Item无响应问题的解决办法

    如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,怎么解决呢?下面小编给大家分享下listview点击item无响应的解决办法

    android TV Recyclerview焦点控制及自动换行

    RecyclerView是个强大的控件,能代替ListView,GridView,能实现瀑布流,还能实现横向ListView,只需要一句代码就能使纵向的ListView变成横向的(主要实现就是布局管理器的选择上)。这里我要实现的是RecyclerView的...

    listView的item中有checkbox,导致setOnItemClick失效的原因及解决办法

    一:item的根布局设置 Android:clickable=true,之后导致item点击事件失效,对根布局设置android:descendantFocusability=blocksDescendants“,以及对...beforeDescendants:viewgroup会优先其子类控件而获取到焦点

    Visual C++ 编程资源大全(英文控件)

    1,01.zip Toolbar - Custom status messages and tooltips 用户状态信息与工具提示(3KB)&lt;END&gt;&lt;br&gt;2,02.zip Remove system menu from floating toolbar 从浮动工具条中去除系统菜单(2KB)&lt;END&gt;&lt;br&gt;3,03....

    Android仿泡泡窗实现下拉菜单条实例代码

    假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view 此时,listview的item无法获取焦点,从而无法被点击 解决方法:给item的根布局增加以下属性 Android:descendantFocusability=...

    Android RecyclerView item选中放大被遮挡问题详解

    在Android TV上一般选中某个View, 都会有焦点突出放大的效果, 但是当在RecyclerView中(ListView或GridView)实现当item View执行放大动画后会被其他的item View遮挡. 原因是: RecyclerView的机制是越靠后的View z-...

    VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:

    1. 在父窗口里,截获自身的或者由子元素(包括控件和菜单等元素)传递的关于界面绘制的消息; 2. 子类化子元素,或者为子元素准备一个新的类(一般来说该类必须继承于MFC封装的某个标准类,如:CButton)。在该子元素里...

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    Android 开发技巧

    4.6.5、ListView 被选中item的背景颜色 82 4.6.6、ListView自定义背景颜色 83 4.6.7、List长按与短按消息映射 84 4.6.8、点击ListView改变背景色 87 4.6.9、自动滚动ListView 88 4.6.10、BaseExpandableListAdapter...

    Android开发资料合集-World版!

    4.6.5、ListView 被选中item的背景颜色 82 4.6.6、ListView自定义背景颜色 83 4.6.7、List长按与短按消息映射 84 4.6.8、点击ListView改变背景色 87 4.6.9、自动滚动ListView 88 4.6.10、BaseExpandableListAdapter...

    C# for CSDN 乱七八糟的看不懂

    逻辑运算符 与:a & b 或:a | b 第8页 C#(WINFORM)学习 非:! A 模数运算符 模数运算符 (%) 计算第二个操作数除第一个操作数后的余数。所有数值类 型都具有预定义的模数运算符。如 Console.WriteLine(5 % 2); ...

Global site tag (gtag.js) - Google Analytics