Как вы устанавливаетеLayoutParams() для ImageView?

Я хочу установить LayoutParams для ImageView, но не могу найти подходящий способ сделать это.

Я могу найти документацию в API для различных ViewGroups, но не ImageView. Тем не менее, ImageView, похоже, обладает этой функциональностью.

Этот код не работает...

myImageView.setLayoutParams(new ImageView.LayoutParams(30,30));

Как мне это сделать?

Ответ 1

Вам нужно установить LayoutParams из ViewGroup, в котором находится ImageView. Например, если ваш ImageView находится внутри LinearLayout, тогда вы создаете

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);

Это потому, что это родительский элемент представления, который должен знать, какой размер выделяется для представления.

Ответ 2

Старый поток, но у меня была такая же проблема. Если кто-нибудь столкнется с этим, он, вероятно, найдет этот ответ:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);

Это будет работать, только если вы добавите ImageView в качестве подвидного в LinearLayout. Если вы добавите его в RelativeLayout, вам нужно будет позвонить:

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);

Ответ 3

ImageView получает setLayoutParams из View, который использует ViewGroup.LayoutParams. Если вы используете это, в большинстве случаев он будет разбиваться, поэтому вы должны использовать getLayoutParams(), который находится в View.class. Это наследует родительский вид ImageView и будет работать всегда. Вы можете подтвердить это здесь: ImageView расширяет вид

Предполагая, что у вас есть ImageView, определяемый как image_view ', а ширина/высота int определяется как ' thumb_size '

Лучший способ сделать это:

ViewGroup.LayoutParams iv_params_b = image_view.getLayoutParams();
iv_params_b.height = thumb_size;
iv_params_b.width = thumb_size;
image_view.setLayoutParams(iv_params_b);

Ответ 4

Если вы меняете макет существующего ImageView, вы должны просто получить текущие LayoutParams, изменить ширину/высоту и установить его обратно:

android.view.ViewGroup.LayoutParams layoutParams = myImageView.getLayoutParams();
layoutParams.width = 30;
layoutParams.height = 30;
myImageView.setLayoutParams(layoutParams);

Я не знаю, была ли эта цель, но если это так, это, вероятно, самое простое решение.