歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發教程:GridView為每行設定背景

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

日期:2017/3/1 10:33:33   编辑:Linux編程

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

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

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

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

其次復寫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. for (int y = top; y<height; y += backgroundHeight){
  10. for (int x = 0; x<width; x += backgroundWidth){
  11. canvas.drawBitmap(background, x, y, null);
  12. }
  13. }
  14. super.dispatchDraw(canvas);
  15. }

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

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