Android:带有滚动架子的GridView

时间:2013-04-11 10:58:10

标签: android gridview scroll

我想创建一个带架子的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时,架子不会移动。我想在滚动时我必须覆盖此类中的某些方法来移动位图背景。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你没有正确接近这个。以这种方式设置背景将不会使其可滚动。有几种方法可以进行背景滚动:

  1. 将一个书架设置为列表项的背景
  2. 将水平书架设置为分隔图像,并将书架背面设置为列表项目的图像。
  3. 将水平货架设置为分隔图像,并将货架背面设置为列表视图的背景(就像现在使用整个货架图像一样)。
  4. 方法3将产生最接近的结果,这就是苹果的iBooks的工作原理。