GridView 自定义Item大小的时候第一个Item显示不正常的解决办法
2017-02-20 10:50
246 查看
项目中在GridView的使用过程中遇到不少问题,在此记录一下,给自己提个醒:
Gridview第一个item不显示的问题。
在GridView中,我们在getView中可以映射每个item的布局,通过inflate的方式。这里参考一下大神的分析,具体在这里有详细的描述三种不同inflate方法的描述:
http://blog.csdn href="http://lib.csdn.net/base/dotnet" target=_blank>.NET/lmj623565791/article/details/38171465。
在此建议使用第二种构造函数来构建inflate,至于为什么,第一种inflate(layoutId, null )是无法获取到布局文件的,那就无法通过getLayoutParams()和setLayoutParams()方法来进行单个item大小设置的。
有的朋友会问,可以用new GridViewLayoutParams()来操作,我对这个理解还不是很明白,但是我发现new出来的东西会出现莫名其妙的问题,所以个人自己建议是通过get和set方法来操作。
第一个item不显示,主要是我们在getView中通过get和set方法进行了动态的item大小控制,那么在这里我们的控制代码应该怎么放置呢?
[html] view
plain copy
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("CustomGridViewAdapter", "getView be called");
ViewHold holder;
if (convertView == null || convertView.getTag() == null) {
convertView = mInflater.inflate(R.layout.image_text_button, parent,false);
holder = new ViewHold();
IniInflaterView(holder, convertView);
convertView.setTag(holder);
} else {
holder = (ViewHold) convertView.getTag();
}
<pre name="code" class="html">int mwidth = mPullToRefreshGridView.getWidth() / 7;
// Log.e("item宽度", mwidth + "");
LayoutParams lp = (LayoutParams) convertView.getLayoutParams();
lp.height = mwidth * 14 / 9;
lp.width = mwidth;
convertView.setLayoutParams(lp);
最最最重要的重点就是
不要在getView中使用new LayoutParams(),在构造方法中先定义出来也不行。。
要通过 getLayoutParams()方法获得已有的LayoutParams
重设height 和 width ,然后使用
Gridview第一个item不显示的问题。
在GridView中,我们在getView中可以映射每个item的布局,通过inflate的方式。这里参考一下大神的分析,具体在这里有详细的描述三种不同inflate方法的描述:
http://blog.csdn href="http://lib.csdn.net/base/dotnet" target=_blank>.NET/lmj623565791/article/details/38171465。
在此建议使用第二种构造函数来构建inflate,至于为什么,第一种inflate(layoutId, null )是无法获取到布局文件的,那就无法通过getLayoutParams()和setLayoutParams()方法来进行单个item大小设置的。
有的朋友会问,可以用new GridViewLayoutParams()来操作,我对这个理解还不是很明白,但是我发现new出来的东西会出现莫名其妙的问题,所以个人自己建议是通过get和set方法来操作。
第一个item不显示,主要是我们在getView中通过get和set方法进行了动态的item大小控制,那么在这里我们的控制代码应该怎么放置呢?
[html] view
plain copy
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("CustomGridViewAdapter", "getView be called");
ViewHold holder;
if (convertView == null || convertView.getTag() == null) {
convertView = mInflater.inflate(R.layout.image_text_button, parent,false);
holder = new ViewHold();
IniInflaterView(holder, convertView);
convertView.setTag(holder);
} else {
holder = (ViewHold) convertView.getTag();
}
<pre name="code" class="html">int mwidth = mPullToRefreshGridView.getWidth() / 7;
// Log.e("item宽度", mwidth + "");
LayoutParams lp = (LayoutParams) convertView.getLayoutParams();
lp.height = mwidth * 14 / 9;
lp.width = mwidth;
convertView.setLayoutParams(lp);
最最最重要的重点就是
不要在getView中使用new LayoutParams(),在构造方法中先定义出来也不行。。
要通过 getLayoutParams()方法获得已有的LayoutParams
重设height 和 width ,然后使用
相关文章推荐
- Android应用程序当中GridView显示不同大小图片时Item挤出问题解决办法
- android的GridView的第一个item(图片)出现显示不正常(多出固定区域一部分蓝色边框)。解决方法
- 解决GridView动态设置宽高导致第一个item点击不响应或显示不正常问题
- GridView设置Item高度,解决第一个item显示不正常以及事件不响应的问题
- Android应用程序当中GridView显示不同大小图片时Item挤出问题解决办法
- Android应用程序当中GridView显示不同大小图片时Item挤出问题解决办法
- 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题
- 自定义导航栏的时候使用UIImagePickerViewControlle Item无法正常显示
- gridview让表格显示不正常解决办法
- Android开发—解决自定义GridView高度第一个item高度异常问题
- Android GridView之实现单元格合并,以及第一个item点击无响应或显示不正常的解决方案
- wm命令使用方法及LCD显示图标大小不正常时解决办法
- ListView或GridView嵌入ScrollView中时,只显示一个Item并且默认将此Item置顶的问题解决办法
- wm命令使用方法及LCD显示图标大小不正常时解决办法
- 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题
- Android GridView之添加分隔线,动态设置高度,实现高度自适应,并解决第一个item不显示的问题
- GridView动态设置Item的宽高 第一个Item显示不正常
- 在XIB 或者Storyboard 上面 控件的大小,位置都是对的, 但是显示的时候,就不对了 的解决办法
- wm命令使用方法及LCD显示图标大小不正常时解决办法
- 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题