在网格视图中更改单元格的大小?

时间:2013-04-27 11:29:04

标签: java android xml gridview

我在Android中有一个gridview,它由一个继承自图像按钮的自定义视图填充。

我想要做的是修改gridview中图像按钮的大小以及它们在单元格之间的填充。

这是我的getView()代码。我尝试过使用布局但不能,因为我无法访问父视图。

public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (image == null)
        image = BitmapFactory.decodeResource(context.getResources(), R.drawable.dollar);

    ExpenseIcon ic = new ExpenseIcon(context);
    ic.setImageBitmap(image);

    return ic;
}

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以使用setColumnWidth(int)设置,或者通过调用setNumColumns(int)来设置列数,具体取决于您尝试的内容。顺便说一下,你也可以用xml(android:columnWidthandroid:numColumns)设置这些值。

对于间距,您可以使用android:horizontalSpacingsetHorizontalSpacing(int)android:verticalSpacingsetVerticalSpacing(int)

要控制更高级别,您需要更改getView功能:

public YourConstructor() {
    // inflater should be a private member variable
    inflater = (LayoutInflater)context
                   .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    // other code...
}

public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView == null) {
        // create new one and put it into convertView. e.g.:
        convertView = new ExpenseIcon(context);
        AbsListView.LayoutParams lp = new AbsListView.LayoutParams(HEIGHT,WIDTH);
        convertView.setLayoutParams(lp);
    }

    // set the image to the currient convertView. e.g.:
    ((ExpenseIcon)convertView).setImageBitmap(image);

    return convertView;
}

答案 1 :(得分:1)

创建XML并inflate.I提供了在getview中使用的示例...在布局中设置imagesize ..

public View getView(int position, View convertView, ViewGroup parent) {
                ViewHolder holder;
    if (convertView == null) {
                convertView = mInflater.inflate(R.layout.grid_item, null);
                holder = new ViewHolder();
                holder.image = (ImageView) convertView.findViewById(R.id.grid_item_image);
                convertView.setTag(holder);
    }else {
                holder = (ViewHolder) convertView.getTag();
    }
                holder.image.setImageResource(list.get(position).getIconid());

                return convertView;
}

static class ViewHolder {
                ImageView image;
                  }