встановити висоту перегляду зображення як відповідну програмі


83

Мені потрібно програмно встановити висоту перегляду зображення як відповідне. Якщо це фіксована висота, я знаю, як встановити.

але як я можу встановити це як відповідне?

РЕДАГУВАТИ:

насправді висота батьківського макета динамічна. тому мені потрібно зробити висоту перегляду зображень висотою батьківської.


2
я спробував усі методи, зазначені у відповідях. але це не встановлення висоти як батьківського збігу :(
andro-girl

1
Вам слід переглянути прийняту відповідь
CularBytes,

Відповіді:


-20

ініціювати LayoutParams.

призначити ширину та висоту батьків і передати це методу setLayoutParams у режимі перегляду зображення


3
ніколи не слід передавати батькам фактичні розміри. Завжди використовуйте MATCH_PARENT замість фактичних значень. Взагалі, я б не рекомендував використовувати абсолютні розміри, оскільки це може виглядати абсолютно по-різному на всіх екранах, що існують. Я вважаю за краще використовувати ваги.
Даніе Бо

12
Чесно кажучи, це повинен бути коментар
Neon Warge

255
imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

12
Як тільки я натискаю Alt + Enter у LayoutParams, я бачу стільки класів. Підкажіть, будь ласка, який із них використовувати?
Uday

що таке батьківський погляд?
C. Leung

4
Ви повинні використовувати клас перегляду, який Ви хочете встановити LayoutParams, тобто використовувати LinearLayout.LayoutParams, щоб встановити дитячі коляски на Ваш LL :)
Ендрю

Що робити, якщо ви хочете, щоб висота була динамічною на основі розмірів вихідного зображення, але хочете, щоб ширина була MATCH_PARENT?
Тейлор

import android.view.ViewGroup
Алан Нельсон,

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

7
Якщо ви встановлюєте параметри вперше, оскільки ви зробили програму перегляду зображень програмно, це призведе до нульової помилки вказівника (або при перегляді тексту), і це має бути деінде.
Татарізувати

15
imageView.setLayoutParams
    (new ViewGroup.MarginLayoutParams
        (width, ViewGroup.LayoutParams.MATCH_PARENT));

Тип параметрів макета залежить від батьківської групи перегляду. Якщо ви поставите неправильний, це призведе до винятку.


1
що таке "ширина"?
FlorianB

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батьків ( ) є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.