Размер изображения ImageView не изменяется с помощью ImageView

У меня есть TableLayout с ячейками ImageViews. Что я пытаюсь сделать, так это создать эффект масштабирования, увеличив размер ImageView в таблице. Это отлично работает для уменьшения масштаба (размер изображения изменяется с помощью ImageView), но проблема заключается в увеличении масштаба. Размер изображения не изменяется, когда ImageView увеличивается.

Вот пример: введите здесь описание изображения

Я хочу, чтобы изображение было того же размера, что и ImageView (каждый черный квадрат - это ImageView)

Вот мой код для масштабирования (любые советы по лучшей реализации будут оценены, не хочу использовать масштабирование).

zoomIndex ranges from -2, 2. (only allow them to zoom twice in each direction)
zoomInThreshold = 2, zoomOutThreshold = -2. 
defaultSize = 50, zoomIncrement = 15;


                if(zoomIndex < zoomInThreshold)
                    defaultSize += zoomIncrement;


                for(int i = 0; i < table.getChildCount(); ++i)
                {
                    TableRow row = (TableRow)table.getChildAt(i);
                    for(int r = 0; r < row.getChildCount(); ++r)
                    {
                        ImageView img = (ImageView)row.getChildAt(r);

                        if(zoomIndex  < zoomInThreshold)
                        {
                            TableRow.LayoutParams imgLayoutParams = new TableRow.LayoutParams(
                                    defaultSize,
                                    defaultSize
                            );
                            img.setLayoutParams(imgLayoutParams);

                            if(img.getDrawable() != null)
                            {
                                img.setAdjustViewBounds(true);
                                img.setMaxHeight(defaultSize);
                                img.setMaxWidth(defaultSize);
                                img.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                            }
                        }
                    }
                }
                if(zoomIndex < zoomInThreshold)
                    zoomIndex++;

person john    schedule 27.06.2014    source источник
comment
вы должны предложить награду за это :)   -  person Wasim Ahmed    schedule 27.06.2014
comment
Я могу начать баунти только через 2 дня   -  person john    schedule 27.06.2014


Ответы (1)


Выяснил проблему, эта проблема возникает только тогда, когда я загружаю свои рисунки из файлов xml. Все, что мне нужно было сделать, это добавить эту строку при загрузке чертежа.

img.setAdjustViewBounds(true);

Вот как это вписывается:

                if(drawableID != -1)
                {
                    Bitmap pic = BitmapFactory.decodeResource(getResources(), drawableID);
                    Bitmap resizedBitmap = Bitmap.createScaledBitmap(pic, 50, 50, true);
                    im.setImageBitmap(resizedBitmap);

                    ic.setImage(im);

                    im.setTag(ic);

                    im.setAdjustViewBounds(true);

                    //rotate the icon
                    im.setScaleType(ImageView.ScaleType.MATRIX);
                    Matrix matrix = new Matrix();
                    matrix.set(im.getImageMatrix());
                    matrix.postRotate(rotAngle, pic.getWidth() / 2, pic.getHeight() / 2);
                    im.setImageMatrix(matrix);

                    im.setOnLongClickListener(longListen);//only set this listener if there is something there
                }

У меня было только img.setAdjustViewBounds(true); в кнопках масштабирования.

person john    schedule 27.06.2014