Как программно создавать SimpleDraweeViews, используя Fresco и Android - PullRequest
2 голосов
/ 07 марта 2019

Я пытаюсь получить 10 изображений с сервера и программно создать фрески draweeViews и поместить их в прокручиваемый вид.

Что я пробовал до сих пор

 private LinearLayout linearLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    linearLayout = findViewById(R.id.linearLayout);
    Fresco.initialize(this);
    getImages("1");

} 
public void getImages(String size) {

    for (int i = 1; i <= 10; i++) {

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        lp.setMargins(0, 0, 0, 0);
        SimpleDraweeView image = new SimpleDraweeView(this);
        image.setLayoutParams(lp);
        // Adds the view to the layout
        linearLayout.addView(image);

        Uri uri = Uri.parse("https://desolate-beach-17272.herokuapp.com/downloadFile/" + size + "mb" + i + ".jpg");
        image.setImageURI(uri);
    }
}

Этот подход работал с Пикассо и Глайдом, но я не мог заставить его работать с фреской. Может ли кто-нибудь помочь мне с этим?

Кстати, сервер запущен и работает, так что вы можете проверить его, если хотите

1 Ответ

1 голос
/ 07 марта 2019

Как указано в документации:

SimpleDraweeView не поддерживает wrap_content для атрибутов layout_width или layout_height.

Поэтому я изменил параметры linearLayout и установил минимальную ширину для представления.Теперь это работает как шарм

 public void getImages(String size) {

    for (int i = 1; i <= 10; i++) {

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        SimpleDraweeView draweeView = new SimpleDraweeView(this);
        draweeView.setLayoutParams(lp);
        draweeView.setMinimumWidth(150);
        draweeView.setMinimumHeight(1500);
        // Adds the view to the layout
        linearLayout.addView(draweeView);

        Uri uri = Uri.parse("https://desolate-beach-17272.herokuapp.com/downloadFile/" + size + "mb" + i + ".jpg");

        draweeView.setImageURI(uri);


    }
}
...