программно установить высоту изображения как matchparent

84

Мне нужно программно установить высоту изображения как matchparent. Если это фиксированная высота, я знаю, как установить.

но как я могу установить его как родителя?

РЕДАКТИРОВАТЬ:

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

андро-девушка
источник
2
Я пробовал все методы, упомянутые в ответах. но он не устанавливает высоту в качестве родителя соответствия :(
andro-girl
1
Вам следует просмотреть принятый ответ
CularBytes

Ответы:

-20

инициировать LayoutParams.

назначьте родительскую ширину и высоту и передайте их методу setLayoutParams изображения

удачливый
источник
3
вы никогда не должны передавать фактические размеры родителей. Всегда используйте MATCH_PARENT вместо фактических значений. В общем, я бы не рекомендовал использовать абсолютные размеры, потому что они могут выглядеть совершенно по-разному на всех имеющихся экранах. Я бы предпочел использовать веса.
Daniel Bo
12
Если честно, это должен быть комментарий
Neon Warge
259
imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
К. Люнг
источник
12
В тот момент, когда я нажимаю Alt + Enter в LayoutParams, я вижу так много классов. Подскажите, пожалуйста, какой использовать?
Удай
что такое родительский взгляд?
C. Leung
4
Вы должны использовать класс представления, который вы хотите установить LayoutParams, то есть использовать LinearLayout.LayoutParams для установки детских колясок на ваш LL :)
Эндрю
Что делать, если вы хотите, чтобы высота была динамической на основе размеров исходного изображения, но чтобы ширина была MATCH_PARENT?
Тейлор
import android.view.ViewGroup
Алан Нельсон
57
imageView.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;
Люк Эллисон
источник
7
Если вы устанавливаете параметры в первый раз, потому что вы сделали просмотр изображения программно, это приведет к ошибке нулевого указателя (или имеет место с текстовым представлением) и должно быть везде.
Tatarize
15
imageView.setLayoutParams
    (new ViewGroup.MarginLayoutParams
        (width, ViewGroup.LayoutParams.MATCH_PARENT));

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

ксанди
источник
1
что такое "ширина"?
FlorianB 03
9

Для пользователей Kotlin

val params = mImageView?.layoutParams as FrameLayout.LayoutParams
params.width = FrameLayout.LayoutParams.MATCH_PARENT
params.height = FrameLayout.LayoutParams.MATCH_PARENT
mImageView?.layoutParams = params

Здесь я использовал, FrameLayout.LayoutParamsтак как мой ImageViewродительский элемент views ( )FrameLayout

Мухамед Рияс М
источник
4

У меня была такая же проблема. Решено сначала установкой:

imageView.setMinHeight(0);
imageView.setMinimumHeight(0);

А потом :

imageView.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;

setMinHeight определяется ImageView, а setMinimumHeight определяется View. Согласно документации, используется большее из двух значений, поэтому должны быть установлены оба.

Фисио
источник
3

Вы можете попробовать это, если хотите сопоставить родителя. Расположение размеров - ширина и высота в порядке.

web = new WebView(this);
        web.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

источник
1

Вы можете использовать константу MATCH_PARENT или ее числовое значение -1.


источник
1
MATCH_PARENT не определен в контексте. Вы должны сказать "LayoutParams.MATCH_PARENT"
Акшат Агарвал,