Изображение перекрывается с другими изображениями при масштабировании

Я программно добавляю элементы ImageView в горизонтальный линейный макет. Затем я установил свойства scaleX и scaleY равными 2 на одном из ресурсов ImageView. Изображение корректно масштабируется, но оно не перемещает другие элементы ImageView, вместо этого оно перекрывает их. Мне не нравится, чтобы изображение перекрывалось с другими изображениями. Как я могу это исправить? Вот мой код:

    int resources[] = {R.drawable.desert, R.drawable.koala, R.drawable.jellyfish,
                       R.drawable.lighthouse, R.drawable.desert};

    for(int i=0; i<5; i++) {
        ImageView logo = new ImageView(this);
        logo.setLayoutParams(new LinearLayout.LayoutParams(100, 75));
        logo.setImageResource(resources[i]);
        logosContainer.addView(logo);
    }

    ImageView middleImage = (ImageView) logosContainer.getChildAt(2);
    middleImage.setScaleX(middleImage.getScaleX() * 2);
    middleImage.setScaleY(middleImage.getScaleY() * 2);

Результат из кода выглядит следующим образом: http://imageshack.us/a/img15/2811/scaleal.jpg

Вы можете ясно видеть, что масштабированное изображение перекрывается с другими изображениями.

1 ответ

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

for(int i=0; i<5; i++) {
   ImageView logo = new ImageView(this);
   if(i==middleImageIndex){
      logo.setLayoutParams(new LinearLayout.LayoutParams(100*2, 75*2,1));
   } else {
      logo.setLayoutParams(new LinearLayout.LayoutParams(100, 75,1));
   }
   logo.setImageResource(resources[i]);
   logosContainer.addView(logo);
}

Последний параметр (100,75, 1) - это вес вида, который гарантирует, что каждый ImageView одинаково важен и не перекрывается.

Еще одно замечание: setScale требует API уровня 11 или выше, что может сократить количество пользователей.

Другие вопросы по тегам