Android: установить ImageView динамически? - PullRequest
1 голос
/ 15 апреля 2011

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

ImageView image = new ImageView(this);
LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
image.setLayoutParams(vp);
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
image.setMaxHeight(50);
image.setMaxWidth(50);
image.setImageDrawable(avatar);
theLayout.addView(image);

может быть, мне нужно обновить макет после добавления ImageView? Как вы «освежитесь»?

Ответы [ 3 ]

4 голосов
/ 19 апреля 2011

Попробуйте следующий код, и вам не нужно будет обновлять. Поместите URL вашего изображения в переменную inputurl.

InputStream is = null;
String inputurl = " Enter url of ur image ";
try {
        URL url = new URL(inputurl);
        Object content = url.getContent();
        is = (InputStream) content;
        avatar = Drawable.createFromStream(is,"src");
} catch (MalformedURLException e) {
        e.printStackTrace();
} catch (IOException e) {
        e.printStackTrace();
}

ImageView image = new ImageView(this);
LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
image.setLayoutParams(vp);
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
image.setMaxHeight(50);
image.setMaxWidth(50);
image.setImageDrawable(avatar);
theLayout.addView(image);
1 голос
/ 12 ноября 2011

Я думаю, вам нужно определить параметры для vp

если вы определите параметры, оно будет отображать изображение как -

LinearLayout.LayoutParams Params=new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
        Params.setMargins(0,0,0,0);

        Params=new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
0 голосов
/ 15 апреля 2011

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

(title) Пример ProgressDialog со вторым потоком http://developer.android.com/guide/topics/ui/dialogs.html

...