歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發教程:GridView為每行設定背景

如果你既想使用GridView,又想給每行設置單獨的背景,該怎麼辦呢?也許你說,用Listview或TableLayout就好了,但是使用這兩個控件比較麻煩的是需要動態計算出列數。

所以想要解決這個問題,需要用如下方法:

首先定義一個類‘MyGridView’繼承自GridView,設置每行用到的背景。

  1. public class MyGridView extends GridView {   
  2.     
  3.     private Bitmap background;   
  4.     
  5.     public MyGridView(Context context, AttributeSet attrs) {   
  6.         super(context, attrs);   
  7.         background = BitmapFactory.decodeResource(getResources(), R.drawable.bg);   
  8.     }   
  9.     
  10. }  

其次復寫GridView的dispatchDraw(Canvas canvas)方法自定義背景

  1. @Override  
  2. protected void dispatchDraw(Canvas canvas) {   
  3.     int count = getChildCount();   
  4.     int top = count>0 ? getChildAt(0).getTop() : 0;   
  5.     int backgroundWidth = background.getWidth();   
  6.     int backgroundHeight = background.getHeight();   
  7.     int width = getWidth();   
  8.     int height = getHeight();   
  9.     
  10.     for (int y = top; y<height; y += backgroundHeight){   
  11.         for (int x = 0; x<width; x += backgroundWidth){   
  12.             canvas.drawBitmap(background, x, y, null);   
  13.         }   
  14.     }   
  15.     
  16.     super.dispatchDraw(canvas);   
  17. }  

好了,現在可以用在Xml裡了,看看效果吧

  1. <your.package.name.MyGridView  
  2.     Android:id="@+id/mygridview"  
  3.     <!-- GridView 其他屬性 -->  
  4.     />  
Copyright © Linux教程網 All Rights Reserved