Как я могу указать динамическую высоту для ImageView? - PullRequest
10 голосов
/ 25 мая 2010

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

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

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

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

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

Спасибо!

Возможно ли это?

Ответы [ 2 ]

5 голосов
/ 26 мая 2010

Первая часть должна быть довольно простой, если вы используете 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>

Одна важная вещь, на которую следует обратить внимание: если для ScrollView не установлено значение android:fillViewport в true, слишком маленькие изображения не будут заполнять весь экран.

0 голосов
/ 25 мая 2010

Совсем не тот ответ, который вы ищете, но это определенно возможно благодаря сочетанию относительной прокрутки прокрутки и динамического кодирования вашего класса не рядом с программирующим компьютером в данный момент, но неопределенный ответ "возможно? да!" :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...