动态更改GridView的大小

时间:2011-10-11 07:52:34

标签: java android android-gridview

我正在为android开发一个应用程序,我有一个很大的旧GridView,它在屏幕上垂直居中,所有单元格都可见。

我想要的是一个函数,通过该函数将所有单元格放大3倍,让用户在gridview中滚动。

如果你熟悉游戏,Wordfeud会如何做。

我搜索过这些网并没有找到一个令人满意的解决方案,我设法找到一种方法来改变我的适配器中的网格贴片的布局参数,但它只是垂直拉伸而不是水平,也是整个应用程序变得缓慢且无响应,直到您滚动列表并让网格重新加载所有视图或其他任何内容。

任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:0)

最后,我使用了一个带有Canvas的自定义视图 - 比尝试将GridView弯曲成它本不应该的东西容易得多。

答案 1 :(得分:0)

我知道你问过这已经有一段时间了,但是我遇到了类似的问题,我花了很长时间才解决这个问题,所以我希望其他人可能偶然发现这个问题。我最终扩展了GridLayout类并挂了一个

的实例
private class ScaleGestureListener
    extends ScaleGestureDetector.SimpleOnScaleGestureListener

在构造函数中:

        scaleDetector = new ScaleGestureDetector(context, new ScaleGestureListener());

因为它是一个视图组,所以重写dispatch ...而不是on ...方法:

     @Override
     public boolean dispatchTouchEvent(MotionEvent ev){
         scaleDetector.onTouchEvent(ev); 
         super.dispatchTouchEvent(ev);
         return true;
     }

    @Override
    public void dispatchDraw(Canvas canvas) {
        String disp = String.valueOf(mScaleFactor);
        Log.v(TAG, "dispatch draw " + disp);

        canvas.save();
                 // i have some other stuff in here specific to my app 
        canvas.scale(mScaleFactor, mScaleFactor);
        super.dispatchDraw(canvas);
        canvas.restore();
    }