Как настроить корректное отображение картинки, когда imageView создается программно?

У меня есть TableLayout, в котором мне нужно отобразить ImageView и TextView в одной строке.
все view элементы я создаю программно, и при создании ImageVIew указываю размеры 130х130 пикселей, но по понятным причинам на разных устройствах картинки отображаются по-разному. Каким образом можно задать размеры ImageView, чтобы оно корректно отображалось на всех устройствах?
Код создания элементов:
for (int i = 0; i < mainParCount; i++) {
            tableRow = new TableRow(getContext());
            tableRow.setLayoutParams( new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

            textView = new TextView(getContext());
            textView.setId(1000+i);
            int current_text_res_id = getStrResFromId(textView.getId(), "main_par_", "string");
            textView.setText(getString(current_text_res_id));
            textView.setTextSize(25);
            textView.setOnClickListener(this);
            textView.setPadding(8,8,8,8);
            textView.setGravity(Gravity.CENTER_VERTICAL);
            textView.setLines(2);

            ImageView imageView = new ImageView(getContext());
            imageView.setId(2000+i);
            imageView.setLayoutParams(new TableRow.LayoutParams(130, 130));
            int current_image_res_id = getImageResFromId(imageView.getId(), "imageicon", "drawable");

            imageView.setImageResource(current_image_res_id);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setPadding(8, 0,8, 0);

            tableRow.addView(imageView);
            tableRow.addView(textView);
            tableRow.setGravity(Gravity.CENTER);

            tableLayout.addView(tableRow, i);
            tableLayout.setColumnShrinkable(i, true);
        }
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@klim76
android/java/sql
1. сверстать ячейку, и инфлейтить ее наполняя содержимым.
2. подумать нельзя ли обойтись каким нибудь List/recucler-View с адаптером.
3. загуглить как в параметры лэйаута передавать не абсолютные цифры :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы