Динамически изменять размер GridView - PullRequest
0 голосов
/ 11 октября 2011

Я разрабатываю приложение для Android, и у меня есть большой старый GridView, который центрирован вертикально на экране, со всеми видимыми ячейками.

То, что я хочу, - это функция, с помощью которой все ячейкиувеличено в 3 раза, позволяя пользователю вместо этого просматривать сетку.

В некотором роде, как это делает Wordfeud, если вы знакомы с игрой.

Я искали я не нашел удовлетворительного решения, мне удалось найти способ изменить параметры макета в моем адаптере для плиток сетки, но он растягивает их только по вертикали, а не по горизонтали, также все приложение становится медленным и не отвечает до тех пор, пока вы не 'Прокрутите список и дайте Grid перезагрузить все представления или что-то в этом роде.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 07 марта 2014

Я знаю, что прошло много времени с тех пор, как вы спросили, но у меня была похожая проблема, на решение которой у меня ушло много времени, поэтому я надеюсь, что кто-то еще может наткнуться на это. В итоге я расширил класс GridLayout и подключил экземпляр

private class ScaleGestureListener
    extends ScaleGestureDetector.SimpleOnScaleGestureListener

в конструкторе:

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

, поскольку это группа представлений, переопределите диспетчеризацию ... вместо методов 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();
    }
0 голосов
/ 17 ноября 2011

В конце концов, вместо этого я использовал собственное представление с Canvas - гораздо проще, чем пытаться согнуть GridView во что-то, чего не должно быть.

...