文档章节

Android – GridView为每行设定背景【转】

w
 walala_Lee
发布于 2014/04/26 10:10
字数 231
阅读 20
收藏 0

如果你既想使用GridView,又想给每行设置单独的背景,该怎么办呢?也许你说,用Listview或TableLayout就好了,但是使用这两个控件比较麻烦的是需要动态计算出列数。

 

所以想要解决这个问题,需要用如下方法:

 

首先定义一个类‘MyGridView’继承自GridView,设置每行用到的背景。

public class MyGridView extends GridView {  
   
    private Bitmap background;  
   
    public MyGridView(Context context, AttributeSet attrs) {  
        super(context, attrs);  
        background = BitmapFactory.decodeResource(getResources(), R.drawable.bg);  
    }  
   
}

 其次复写GridView的dispatchDraw(Canvas canvas)方法自定义背景

@Override  
protected void dispatchDraw(Canvas canvas) {  
    int count = getChildCount();  
    int top = count>0 ? getChildAt(0).getTop() : 0;  
    int backgroundWidth = background.getWidth();  
    int backgroundHeight = background.getHeight();  
    int width = getWidth();  
    int height = getHeight();  
   
    for (int y = top; y<height; y += backgroundHeight){  
        for (int x = 0; x<width; x += backgroundWidth){  
            canvas.drawBitmap(background, x, y, null);  
        }  
    }  
   
    super.dispatchDraw(canvas);  
}

 好了,现在可以用在Xml里了,看看效果吧

<your.package.name.MyGridView  
    android:id="@+id/mygridview"  
    <!-- GridView 其他属性 -->  
    />
 原文地址: http://thierry-xing.iteye.com/blog/1396779

本文转载自:http://thierry-xing.iteye.com/blog/1396779

共有 人打赏支持
w
粉丝 3
博文 167
码字总数 50381
作品 0
深圳
私信 提问
巧妙地添加GridView的 网格线

ListView 中设置分隔线的加如下参数即可: android:divider="@color/gray" android:dividerHeight="1dp" GridView网格布局,默认情况下是没有网格线的 查找网上资料,找到了一种为GridView添加...

泽江08
2014/11/11
0
0
Android Selector

Selector的应用: http://www.cnblogs.com/loulijun/archive/2012/04/15/2450312.html 使用selector修改TextView中字体的颜色: http://blog.csdn.net/dinglin87/article/details/7885806 2.......

当空皓月
2014/10/08
0
0
android点滴19:布局技巧小结

1.如何设置半透明、透明效果?透明色和RGB是两码事,透明色不能够用RGB表示,只能用RGBA表示,最后的即为透明值Alpha。放心,强大的android系统已经为我们提供了显示透明色的功能!如显示背景...

独鸣在彼岸
2013/05/30
0
0
ListView/GridView 按住拖动黑线框/桌面背景透上来【已解决】

本文标签: GridView , listview , 黑线框 方法1:listView.setDividerHeight(0); 方法2:this.getListView().setDivider(null); 方法3:android:divider="@null" 方法4:setCacheColorHint......

mythroad
2013/09/11
0
0
Android 超高仿微信图片选择器 图片该这么加载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lmj623565791/article/details/39943731 转载请标明出处:http://blog.csdn.net/lmj623565791/article/detai...

鸿洋_
2014/10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
22分钟前
3
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0
命令参数的三大风格:Posix、BSD、GNU

今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

大别阿郎
昨天
2
0
PHP生成图片验证码

PHP生成图片验证码 /** * PHP生成图片验证码 * Class VerifyImage */class VerifyImage{ // 生成随机字串 private $verifyCode; // 图片对象 private $image; /**...

DrChenXX
昨天
1
0
纹理与表面细节添加方法---OpenGL纹理函数

OpenGL线纹理函数 OpenGL表面纹理函数 OpenGL体纹理函数 OpenGL纹理图案的颜色选项 OpenGL纹理映射选项 OpenGL纹理环绕 复制帧缓存中的OpenGL纹理图案 OpenGL纹理坐标数组 OpenGL纹理图案命名...

中国龙-扬科
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部