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



    前言

    这个问题在之前做一个盒子项目时遇到过,最近又遇到了,使用GridView遇到的非常奇葩的问题,这里记录分享一下。

    声明
    欢迎转载,但请保留文章原始出处:) 
    博客园:http://www.cnblogs.com
    农民伯伯: http://over140.cnblogs.com 

    正文

    一、问题

    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?

     

    结束

    博客日渐荒废,还是要勤写。 

  • 相关阅读:
    Log4j appender、layout
    EhCache缓存框架的使用
    Log4j rootLogger根配置以及4种日志级别
    开发chrome 插件, background.js中 console log 看不到解决方法
    Windows cmd 长时间不输出新内容 直到按下ctrl + c 取消或者回车的解决办法
    如何查看当前分支从哪个支线创建而来
    C# 获取相对路径的字符串
    解决adobe air sdk打包 apk后自动在包名前面加上air. (有个点)前缀的问题
    sublime text 输入法候选词不跟随光标
    Windows 批处理设置dns ,解决能上qq不能开网页
  • 原文地址:https://www.cnblogs.com/over140/p/3999815.html
Copyright © 2020-2023  润新知