Как указать динамическую высоту для ImageView?

У меня есть ImageView в верхней части экрана, который выглядит следующим образом:

╔══════════════════════════════════════════════╗ ║ ImageView ╔══════════════╗ ║ ║ ║ ║ ║ ║ ║ Actual image ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╚══════════════╝ ║ ╚══════════════════════════════════════════════╝ 

Ниже, у меня есть серия кнопок и TextViews ..

Я бы хотел, чтобы высота ImageView динамически увеличивалась в зависимости от максимальной высоты экрана. Я выравниваю макет, содержащий кнопки в нижней части края экрана, и я хотел бы, чтобы остальная часть экрана была занята вышеупомянутым ImageView.

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

Благодаря!

Это возможно?

Solutions Collecting From Web of "Как указать динамическую высоту для ImageView?"

Первая часть должна быть довольно простой, если вы используете android:layout_width . Если вы установите layout_width только для ImageView (или его контейнера), он будет расширяться, чтобы как можно больше использовать родительский макет. Например, если вам нужен макет, где ImageView занимает весь остальной экран, вы должны сделать это:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/icon" android:scaleType="fitCenter" android:layout_weight="1" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <!-- Put whatever you want in here --> </LinearLayout> </LinearLayout> 

В этом примере я растягиваю изображение, чтобы охватить весь экран, но вы также представляете проблему «что, если изображение слишком велико для экрана, и мне нужна прокрутка?» В этом случае все, что вам нужно сделать, это добавить ScrollView в макет. Если изображение слишком высокое вертикально, экран автоматически прокручивается:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/huge" android:scaleType="fitCenter" android:layout_weight="1" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <!-- Insert your content here --> </LinearLayout> </LinearLayout> </ScrollView> 

Важно отметить: если у вас нет android:fillViewport установлен на true в ScrollView, ImageViews, которые слишком малы, не заполнят весь экран.

Полностью не тот ответ, который вы ищете, но это определенно возможно благодаря сочетанию relativelayout scrollview и динамического кодирования через ваш класс. Не рядом с компьютером программирования в настоящий момент, но неопределенный ответ «возможно? Да!» 🙂