国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現九宮格(GridView中各項平分空間)的方法

2020-04-11 11:29:27
字體:
來源:轉載
供稿:網友

本文實例講述了Android實現九宮格(GridView中各項平分空間)的方法。分享給大家供大家參考。具體如下:

項目需要做一個九宮格(也不一定是9的,4宮格、16宮格、4x3宮格。。。),封了 一個宮格,它能夠根據為它分配的空間來自動的調節宮中各項的尺寸。

從TableLayout集成來的,因此如果你直接在設計器上使用該封裝的話需要把它自動加進去的那幾個TableRow刪除一下。

類名為AdvancedGridView,代碼如下:

import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.TableLayout; import android.widget.TableRow; /**  * AdvancedGridView  * @author RobinTang  * @time 2012-10-15  */ public class AdvancedGridView extends TableLayout { // private static final String tag = "AdvancedGridView";   private int rowNum = 0; // row number   private int colNum = 0; // col number   private BaseAdapter adapter = null;    private Context context = null;   public AdvancedGridView(Context context) {     super(context);     initThis(context, null);   }   public AdvancedGridView(Context context, AttributeSet attrs) {     super(context, attrs);     initThis(context, attrs);   }   private void initThis(Context context, AttributeSet attrs) {     this.context = context;     if (this.getTag() != null) {       String atb = (String) this.getTag();       int ix = atb.indexOf(',');       if (ix > 0) {         rowNum = Integer.parseInt(atb.substring(0, ix));         colNum = Integer.parseInt(atb.substring(ix+1, atb.length()));       }     }     if (rowNum <= 0)       rowNum = 3;     if (colNum <= 0)       colNum = 3;     if(this.isInEditMode()){       this.removeAllViews();       for(int y=0; y<rowNum; ++y){         TableRow row = new TableRow(context);         row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f));         for(int x=0; x<colNum; ++x){           View button = new Button(context);           row.addView(button, new TableRow.LayoutParams (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f));         }         this.addView(row);       }     }   }   public BaseAdapter getAdapter() {     return adapter;   }   public void setAdapter(BaseAdapter adapter) {     if(adapter != null){       if(adapter.getCount() < this.rowNum*this.colNum){         throw new IllegalArgumentException("The view count of adapter is less than this gridview's items");       }       this.removeAllViews();       for(int y=0; y<rowNum; ++y){         TableRow row = new TableRow(context);         row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f));         for(int x=0; x<colNum; ++x){           View view = adapter.getView(y*colNum+x, this, row);           row.addView(view, new TableRow.LayoutParams (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f));         }         this.addView(row);       }     }     this.adapter = adapter;   }   public int getRowNum() {     return rowNum;   }   public void setRowNum(int rowNum) {     this.rowNum = rowNum;   }   public int getColNum() {     return colNum;   }   public void setColNum(int colNum) {     this.colNum = colNum;   } }

如果你想在設計階段就看到宮格效果的話,你可以在該空間的Tag屬性上設置行列個數。比如我想看到3x3的宮格樣子的話就設置成"3,3",如下圖,當然你也可以在代碼中使用setRowNum()和setColNum()來進行設置,但是請在設置適配器前調用這兩個方法。

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 额敏县| 牟定县| 阿鲁科尔沁旗| 凤城市| 鹰潭市| 涡阳县| 苍南县| 洪雅县| 南通市| 方正县| 绥中县| 稷山县| 合江县| 古田县| 农安县| 彭山县| 隆安县| 平远县| 大新县| 长葛市| 郎溪县| 班戈县| 桐城市| 基隆市| 九寨沟县| 双辽市| 皮山县| 福建省| 龙岩市| 郁南县| 个旧市| 元谋县| 澄城县| 五莲县| 始兴县| 湘潭县| 台中市| 页游| 江北区| 九龙城区| 武陟县|