今天在修改一个gridview的时候,发现里面的内容并不会自动适应,填满整个gridview,而是会产生滑动,尝试了很多的方法,包括在item文件中设定width和height,结果,宽度可调,高度却没办法调整,后来,在网上找了好多的方法,终于有了一个靠谱的,如下,也就是在item加载的adapter里面就行设置

 @Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
if (MmsConfig.getIpMessagServiceId(mContext) == IpMessageServiceId.NO_SERVICE) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.share_grid_common_item, null);
} else {
convertView = LayoutInflater.from(mContext).inflate(R.layout.share_grid_item, null);
}
convertView.setTag(convertView);
} else {
convertView = (View) convertView.getTag();
}
/* Vanzo:zhangshuli on: Wed, 21 Jan 2015 18:16:59 +0000
dime资源的引用方法
*/
int height = (int) mContext.getResources().getDimension(R.dimen.share_item_port_height);  
int width = (int) mContext.getResources().getDimension(R.dimen.share_item_port_width);
AbsListView.LayoutParams param = new AbsListView.LayoutParams(width, height);//设置高和宽,注意是AbsListView
            convertView.setLayoutParams(param);
// End of Vanzo:zhangshuli TextView text = (TextView) convertView.findViewById(R.id.tv_share_name);
ImageView img = (ImageView) convertView.findViewById(R.id.iv_share_icon);
if (position < mStringArray.length) {
text.setText(mStringArray[position]);
img.setImageResource(mIconArray[position]);
}
return convertView;
}
}

调整gridview在父类中的位置,注意,是可以超出屏幕外边的哦

 @Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int childLeft = 0;
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
final View childView = getChildAt(i);
if (childView.getVisibility() != View.GONE) {
final int childWidth = childView.getMeasuredWidth();
/* Vanzo:zhangshuli on: Wed, 21 Jan 2015 18:12:28 +0000
这段代码就是设置gridview位置的,这个主要是相对父类的位置 
*/
int top = (int) mContext.getResources().getDimension(R.dimen.share_item_port_top);
childView.layout(childLeft, top, childLeft + childWidth,
childView.getMeasuredHeight());
// End of Vanzo: zhangshuli
childLeft += childWidth;
}
}
}

附上代码中处理dp跟px转化的方法

一个就是在dimen.xml中定义,引用的时候会自动转化为px;

另一个就是直接在代码中将一个固定数值转化为px,如下

 public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
} TextView text = (TextView) convertView.findViewById(R.id.tv_share_name);

gridView -item 大小调节(dimen-代码引用)的更多相关文章

  1. GridView Item 大小可能不一样,如何保持同一行的Item 高度大小相同,且GridView高度自适应!

    昨天用到GridView,但是遇到几个问题,就是GridView默认的item其实大小是一致的,但是我们经常会遇到item大小不同,系统默认会留白的问题,很头疼!如下图这样的:      就会造成,右 ...

  2. NGUI实现的一套不同大小 Item 的循环滚动代码

    测试: 数据 & Item  的 Ctrl : using UnityEngine; public class ScrollViewItemData { public int index; p ...

  3. Item 26: 避免对universal引用进行重载

    本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你需要写一个以名字作为参数,并记录下当前日期和 ...

  4. 一个可变布局列表,有9种布局item大小,每个item可拖拽切换位置

    代码地址如下:http://www.demodashi.com/demo/11271.html 一.准备工作 准备一台安卓设备手机,4.4以上版本 本例子实现,一个可变布局列表,有9种布局item大小 ...

  5. 实现图片大小的自动控制( 图片大小控制CSS代码)

    图片大小控制CSS代码 将以下代码放到你的样式表文件中即可实现图片大小的自动控制. /*图片大小控制CSS By Tekin */img,a img{border:0;margin:0;padding ...

  6. GridView item设置点击背景

    GridView item设置点击背景 android:listSelector="@android:color/transparent"

  7. html页面控制字体大小的js代码

    dom对象控制显示文章字体大小的js代码 <head> <script type="text/javascript"> function check(siz ...

  8. c++命令提示符窗体下打印指定大小的菱形代码

    c++命令提示符窗体下打印指定大小的菱形代码 VS2010下,新建空项目.加入源文件,将代码粘贴进去就能够了. 通过改maxRows值的大小,能够控制菱形的大小 #include <stdio. ...

  9. MyEclipse背景色不伤眼+字体大小调节+代码格式化不换行

随机推荐

  1. [NOIP1999]进制位(搜索)

    P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...

  2. ECNUOJ 2613 Gamma 函数

    Gamma 函数 Time Limit:1000MS Memory Limit:65536KBTotal Submit:237 Accepted:138 Description  Pollux最近在复 ...

  3. CodeForces 383C Propagating tree

    Propagating tree Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces ...

  4. JVM学习心得

    出处:http://blog.csdn.net/qq_16143915/article/details/51195438 一.JAVA内存管理与GC机制 Java在JVM所虚拟出的内存环境中执行,ja ...

  5. Class C++

    为了尽量降低全局变量的使用并提供用户自己定义类型的功能.C++语言提供了一种新的语言机制---类(class).并以类作为构造程序的基本单位 #include<iostream> usin ...

  6. TRIZ系列-创新原理-7-嵌套原理

    原理表述例如以下: 1)把一个物体嵌入另外一个物体.然后将这两个物体再嵌入第三个物体,以此类推. 这个原理又叫俄罗斯娃原理,目的是在不影响原有功能的情况下: A) 在须要时.能够降低系统的体积和便于携 ...

  7. 暑假集训-WHUST 2015 Summer Contest #0.1

    ID Origin Title   4 / 12 Problem A Gym 100589A Queries on the Tree 14 / 41 Problem B Gym 100589B Cou ...

  8. sql中 where语句的用法

    //查询user_id 10到20 之间  30到40之间 //查询user_id 不在10到20之间的

  9. python 深浅拷贝小记

    浅拷贝:只拷贝第一层的数据 深拷贝:相当于克隆 一份,也就是完全复制,和被克隆对象完全没关系. 浅拷贝示例:先定义一个列表 >>> s = [1,'alex','alvin'] &g ...

  10. 再次学习 Iterator 迭代器 与 Generator 生成器

    Iterator : 返回的结果是:{value, done} function chef(foods){ let i = 0; return { next(){ let done = ( i> ...