Android实现九宫格(GridView中各项平分空间)的方法_Android

本文实例讲述了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程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, gridview
九宫格
gridview实现九宫格、gridview九宫格、android gridview平分、gridview 平分屏幕、gridview平分,以便于您获取更多的相关知识。

时间: 2024-09-15 08:28:46

Android实现九宫格(GridView中各项平分空间)的方法_Android的相关文章

Android实现九宫格(GridView中各项平分空间)的方法

本文实例讲述了Android实现九宫格(GridView中各项平分空间)的方法.分享给大家供大家参考.具体如下: 项目需要做一个九宫格(也不一定是9的,4宫格.16宫格.4x3宫格...),封了 一个宫格,它能够根据为它分配的空间来自动的调节宫中各项的尺寸. 从TableLayout集成来的,因此如果你直接在设计器上使用该封装的话需要把它自动加进去的那几个TableRow删除一下. 类名为AdvancedGridView,代码如下: import android.content.Context;

Android实现GridView中ImageView动态变换的方法_Android

本文实例讲述了Android实现GridView中ImageView动态变换的方法.分享给大家供大家参考.具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片. 自己写了一个类似的demo,具体步骤如下: 1.创建一个包含Grid的Acitity 2.创建item.xml 里面包含一个imageview和一个textview 3.自定义一个adapter,从baseadapter继承 4.在getView中为每个im

Android MVP模式ListView中嵌入checkBox的使用方法_Android

MVP模式 ListView中嵌入checkBox的使用 本文写的是一个小demo,如何在ListView中嵌入checkBox配合使用,本篇文章与前面的嵌入Button类似,同样的采用MVP模式的写代码,本次案例中会有几个小细节,我将会在案例中介绍. 程序基本框架如下: View层: MainActivity.java public class MainActivity extends AppCompatActivity implements ViewInter<MyBean>{ //Lis

android在异步任务中关闭Cursor的代码方法_Android

查询数据会比较耗时,所以我们想把查询数据放在一个异步任务中,查询结果获得Cursor,然后在onPostExecute (Cursor result)方法中设置Adapter,我们可能会想到使用Activity的managedQuery来生成Cursor,这样Cursor就会与Acitivity的生命周期一致了,多么完美的解决方法!然而事实上managedQuery也有很大的局限性,managedQuery生成的Cursor必须确保不会被替换,因为可能很多程序事实上查询条件都是不确定的,因此我们

Android实现取消GridView中Item选中时默认的背景色_Android

本文实例讲述了Android实现取消GridView中Item选中时默认的背景色.分享给大家供大家参考,具体如下: 1.  取消GridView中Item选中时默认的背景色,当使用GridView时候点击item项时候,会有一个android默认的背景色,取消它的方法是: game_gridview.setSelector(new ColorDrawable(Color.TRANSPARENT)); //取消GridView中Item选中时默认的背景色 2.  GridView第一个item不显

Android实现取消GridView中Item选中时默认的背景色

本文实例讲述了Android实现取消GridView中Item选中时默认的背景色.分享给大家供大家参考,具体如下: 1.  取消GridView中Item选中时默认的背景色,当使用GridView时候点击item项时候,会有一个android默认的背景色,取消它的方法是: game_gridview.setSelector(new ColorDrawable(Color.TRANSPARENT)); //取消GridView中Item选中时默认的背景色 2.  GridView第一个item不显

Android实现GridView中ImageView动态变换的方法

本文实例讲述了Android实现GridView中ImageView动态变换的方法.分享给大家供大家参考.具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片. 自己写了一个类似的demo,具体步骤如下: 1.创建一个包含Grid的Acitity 2.创建item.xml 里面包含一个imageview和一个textview 3.自定义一个adapter,从baseadapter继承 4.在getView中为每个im

asp.net GridView中使用RadioButton单选按钮的方法_实用技巧

本文实例讲述了asp.net GridView中使用RadioButton单选按钮的方法.分享给大家供大家参考,具体如下: 在GridView里做单选按钮,我用了三种方法 第一种方法:在GridView的模版列里加服务器端控件RadioButton,使用js控制单选 使用模版列里加RadioButton <script type="text/javascript"> function setRadio(nowRadio) { var myForm,objRadio; myF

android 获取手机内存及 内存可用空间的方法

实例如下: //1.获取内存可用大小,内存路径 String path=Environment.getDataDirectory().getAbsolutePath(); String memoryAvaliSpace= Formatter.formatFileSize(this,getAvailSpace(path)); //2.获取sd卡可用大小,sd卡路径 String sdPath=Environment.getExternalStorageDirectory().getAbsolute