我在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;
}
我该怎么做?
答案 0 :(得分:3)
您可以使用setColumnWidth(int)
设置,或者通过调用setNumColumns(int)
来设置列数,具体取决于您尝试的内容。顺便说一下,你也可以用xml(android:columnWidth
和android:numColumns
)设置这些值。
对于间距,您可以使用android:horizontalSpacing
或setHorizontalSpacing(int)
和android:verticalSpacing
或setVerticalSpacing(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;
}