我想创建一个带架子的GridView。我为此创建了一个类:
public class ShelveGridView extends GridView{
private Bitmap background;
public ShelveGridView(Context context, AttributeSet attrs) {
super(context, attrs);
background = BitmapFactory.decodeResource(getResources(), R.drawable.bibliotca_image_shelf);
}
@Override
protected void dispatchDraw(Canvas canvas) {
int count = getChildCount();
int top = count < 0 ? getChildAt(0).getTop() : 0;
int backgroundWidth = background.getWidth();
int backgroundHeight = background.getHeight();
int width = getWidth();
int height = getHeight();
for (int x = 0; x < width; x += backgroundWidth)
for (int y = top; y < height; y += backgroundHeight)
canvas.drawBitmap(background, x, y, null);
super.dispatchDraw(canvas);
}...
但是当我滚动GridView时,架子不会移动。我想在滚动时我必须覆盖此类中的某些方法来移动位图背景。有什么建议吗?
答案 0 :(得分:2)
你没有正确接近这个。以这种方式设置背景将不会使其可滚动。有几种方法可以进行背景滚动:
方法3将产生最接近的结果,这就是苹果的iBooks的工作原理。