我正在开发一个Android应用程序,需要显示一个书架,每行最多包含3个图像。我正在使用gridview。但我陷入了一点,我无法改变gridview中整行的背景。谁能告诉我怎么做?
用于gridview的适配器
private class SampleGridAdapter extends BaseAdapter{
private Context context;
private int[] images = {"R.drawable.img1","R.drawable.img2","R.drawable.img3","R.drawable.img4","R.drawable.img5","R.drawable.img6","R.drawable.img7"};
public SampleGridAdapter(Context context) {
super();
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return images.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
View v = null;
ImageView coverImageView;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.bookgrid, null);
coverImageView = (ImageView) v.findViewById(R.id.coverImageView);
coverImageView.setImageResource(images[position]);
coverImageView.setScaleType(ImageView.ScaleType.FIT_XY);
return v;
}
}
bookgrid.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shelfimage" >
<ImageView
android:id="@+id/coverImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:paddingBottom="0dp"
android:paddingLeft="25dp"
android:paddingTop="6dp"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
我在gridview声明中将列数设置为3。这里我将xml文件中的背景设置为android:background =“@ drawable / shelfimage”。但它是为每个项目单独设置背景......我想设置一个单独的图像作为每行的背景(有3个项目)....
答案 0 :(得分:2)
您可以查看this示例对您有所帮助。
答案 1 :(得分:1)
答案是我对你的理解。
如果您正在使用某个适配器进行gridview,则在适配器类和getView方法中检查位置并将颜色设置为您要膨胀的布局。在适配器类getview方法中,可以针对特定位置更改膨胀视图的bg。
如果使用适配器实现了视图,则逻辑可以正常工作。
答案 2 :(得分:0)
我认为实现这一目标的唯一方法是设置gridview的背景图像,它在垂直方向上重复(或者可能是其中之一),示例代码:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bg_image);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
bitmapDrawable.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT);
gridView.setBackgroundDrawable(bitmapDrawable);