У меня есть ImageView наверху моего дисплея, который похож на следующее:
╔══════════════════════════════════════════════╗
║ ImageView ╔══════════════╗ ║
║ ║ ║ ║
║ ║ Actual image ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ╚══════════════╝ ║
╚══════════════════════════════════════════════╝
Ниже этого у меня есть серия Кнопок и TextViews..
Я хотел бы, чтобы высота ImageView динамично увеличилась в зависимости от макс. высоты экрана. Я выравниваю расположение, содержащее кнопки вдоль нижней части края экрана, и я хотел бы остальную часть экрана, поднятого вышеупомянутым ImageView.
Кроме того, так как ImageView содержит изображение в центре, я также хотел бы установить минимальную высоту и полосу прокрутки, если экран является слишком маленьким для отображения 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 слишком малы не будет заполнять весь экран.
совершенно не тот ответ, который вы ищете, но это определенно возможно благодаря сочетанию относительной прокрутки и динамического кодирования в вашем классе. сейчас нет рядом с программирующим компьютером, но расплывчатый ответ - «возможно? да!» :)