ImageView меняет размер, когда я addView - PullRequest
0 голосов
/ 03 апреля 2012

Все, что я хочу сделать, это взять изображение из Интернета (Succeess!) И отобразить его в любом разрешении, в котором оно изначально, с помощью прокрутки. однако, когда я добавляю ViewView в scrollview, изображение изменяется в размерах (в отличие от того, когда я вызываю setContentView для самой деятельности, где, когда я получаю результат, я ищу.

ScrolView sv = new ScrollView(this);
addContentView(sv);
ImageView iv = new ImageView(this);
putDrawableFromUrlIntoIv(iv, url); //this fills iv with a drawable
sv.addView(iv);

Не так много кода, чтобы показать, но я решил, что все равно покажу. В тестовом случае d - это 480x800, но это будут разные размеры. На экране отображается уменьшенное изображение. Что происходит?

РЕДАКТИРОВАТЬ: addContentView (sv) предшествует sv.addView (d); Это проблематично? Я делаю это потому, что ... я на самом деле лениво загружаю рисование в реальности, передавая

Я также попробовал следующее в качестве теста:

{
   ScrollView sv = new ScrollView(this);
   ImageView iv = new ImageView(this);
   Drawable d = a_480x800_drawable;
   iv.setImageDrawable(d);
   sv.addView(iv, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
   setContentView(sv);
}

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

Ответы [ 2 ]

0 голосов
/ 30 октября 2013
{
ScrollView sv = new ScrollView(this);

ImageView iv = new ImageView(this);

Drawable d = a_480x800_drawable;

iv.setImageDrawable(d);

sv.addView(iv, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

setContentView(sv);

}

//instead of this use
{
     ScrollView sv = new ScrollView(this);
     ImageView iv = new ImageView(this);
     Drawable d = a_480x800_drawable;

     iv.setImageDrawable(d);

     LayoutParams lp = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

     lp.topMargin = 50; //or whatever u like

     lp.leftMargin = 50;

     sv.addView(iv, lp);
     setContentView(sv);

}

0 голосов
/ 03 апреля 2012

Возможно, попробуйте добавить параметры макета в ImageView,

sr.addView(d, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
...