Android PopupWindow中ListView无法点击的问题解决

这是一个简单的问题,但是对于没有了解过的人来说可能要找一会Bug了,PopupWindow中ListView无法点击,监听事件没有响应,在使用ListView时,通常都需要我们自己去定义Adapter来满足开发中的个性化需求,比如每一项中有Button、CheckBox、RadioButton、TextView等组件时,显然android.jar自带的BaseAdapter无法满足我们的需求。这时我们通常会遇到listview的每一项无法响应点击的问题,因为消息还没传回每一项的viewgroup就被其子view消费了,通过为该ViewGroup设置“android:descendantFocusability”属性来强制获取焦点,以便能够消费android系统传递过来的消息。

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

  • beforeDescendants:viewgroup会优先其子类控件而获取到焦点

  • afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

  • blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

 所以我们只需要在每一项Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了

声明一下:设置PopupWindow.setFocusable(true)是没有用的。

解决:(直接在根布局里加下面的属性)


    android:descendantFocusability="blocksDescendants"



    
        
        
            
            
            
            
            
            
            
            
        
    




你可能感兴趣的:(Android控件的功能)