программно установить высоту изображения как 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"
Акшат Агарвал,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.