【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题

简介:

一、问题

1.1 先看问题代码:

    @Override
     public View getView( int position, View convertView, ViewGroup parent) {
         if (convertView ==  null) {
            convertView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_feed_grid_item, parent,  false);
            convertView.findViewById(R.id.avatar).setOnClickListener( new View.OnClickListener() {
                @Override
                 public  void onClick(View v) {
                     // startActivity
                }
            });
        }

         convertView.setLayoutParams( new  GridView.LayoutParams(mWindowWidth / 3, mWidowWidth / 3));
        
         // 其他代码
         return convertView;
    }

代码的目的是希望根据屏幕的宽度动态设置GridView内Item的大小,很自然就这么写了。

1.2 具体症状

1.2.1 第一个Item的ImageView显示不全,总是显示一半,其他的Item没有问题,如论怎么设置都没用

1.2.2 第一个Item里面设置的点击事件不管用,但是轻轻的滚动一下点击事件立马就生效了。 

二、解决办法

    @Override
     public View getView( int position, View convertView, ViewGroup parent) {
         if (convertView ==  null) {
            convertView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_feed_grid_item, parent,  false);
             convertView.setLayoutParams( new  GridView.LayoutParams(mWindowWidth / 3, mWindowWidth / 3));
            convertView.findViewById(R.id.user_avatar).setOnClickListener( new View.OnClickListener() {
                @Override
                 public  void onClick(View v) {
                     // startActivity
                }
            });
        }

         // 其他代码
         return convertView;
    }

如上即可。 

三、相关文章

 Why is changing where layout parameters are set solving my “OnClickListener not working for first item in GridView” issue?

本文转自博客园农民伯伯的博客,原文链接:【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题,如需转载请自行联系原博主。



目录
相关文章
|
8天前
|
Android开发 UED
Android Item平移动画
【6月更文挑战第18天】
|
7天前
|
Android开发
Android中如何动态的调整Dialog的背景深暗
在Android开发中,Dialog和DialogFragment可通过设置`Window`的`backgroundDimAmount`来控制背景变暗,突出对话框。在DialogFragment的`onCreateDialog`或`onViewCreated`中,获取`Dialog`的`Window`,设置`LayoutParams.dimAmount`(例如0.5f)并添加`FLAG_DIM_BEHIND`标志。要动态调整,可保存`LayoutParams`并在需要时更新。对于Dialog,创建时直接设置同样属性。还可以通过定义主题样式设置背景模糊程度。
20 7
|
3天前
|
Android开发
Android Studio(2022.3.1)设置阿里云源-新旧版本
Android Studio(2022.3.1)设置阿里云源-新旧版本
15 1
|
4天前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
17 2
|
9天前
|
Android开发
Android 自定义View 测量控件宽高、自定义viewgroup测量
Android 自定义View 测量控件宽高、自定义viewgroup测量
14 0
|
9天前
|
XML Java Android开发
Android RecyclerView用代码动态设置item的selector
Android RecyclerView用代码动态设置item的selector
13 0
|
9天前
|
开发工具 Android开发 git
Android自定义View——可以设置最大宽高的FrameLayout
Android自定义View——可以设置最大宽高的FrameLayout
21 0
|
9天前
|
JSON Android开发 数据格式
Android动态添加view设置view大小(宽高)
Android动态添加view设置view大小(宽高)
10 0
|
5天前
|
Java 开发工具 Android开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着半壁江山。本文将深入探讨这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计、性能优化以及市场覆盖等方面。通过对这些关键因素的比较分析,旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和目标受众做出明智的平台选择。
|
5天前
|
编解码 Android开发 iOS开发
深入探索Android与iOS开发的差异与挑战
【6月更文挑战第24天】在移动应用开发的广阔舞台上,Android和iOS两大操作系统扮演着主角。它们各自拥有独特的开发环境、工具集、用户基础及市场策略。本文将深度剖析这两个平台的开发差异,并探讨开发者面临的挑战,旨在为即将踏入或已在移动开发领域奋斗的开发者提供一份实用指南。
27 13