ImageView должен быть на весь экран, но имеет неправильную высоту - PullRequest
0 голосов
/ 08 января 2012

Я работаю над простым приложением, которое показывает изображения 4x3 в нижней половине экрана в портретной ориентации и заполняет экран в альбомной ориентации. Портретные работы и изображения размером 320x240 (которые загружаются по сети) показаны в этом размере.

Поверните в альбомную ориентацию, и я использую отдельный макет в res / layout-land, который опускает верхнюю половину портретного макета и размещает ImageSwitcher на весь экран. Некоторые полупрозрачные элементы управления накладываются на изображение, поэтому для этого используется тег слияния в макете XML с ImageSwitcher и RadioGroup:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <ImageSwitcher
        android:id="@+id/imageSwitcher"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="fill">
   </ImageSwitcher>

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|left"
        android:orientation="horizontal">
    ...
</merge>

ImageViews в ImageSwitcher загружаются из отдельного макета:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="fill"
    android:scaleType="fitXY"
    android:adjustViewBounds="true"
    android:contentDescription="@null">
</ImageView>

По какой-то причине изображения не заполняют экран. Осматривая иерархию представлений с помощью просмотрщика иерархии, я вижу, что ImageSwitcher имеет размеры 480x295 (полный экран без верхней панели), но содержащиеся в нем ImageView имеют размеры 480x240.

Я боролся с этим пару часов, возясь со всеми настройками макета в ImageSwitcher и ImageViews, но я не могу заставить ImageView соответствовать размеру 480x295 его родителя. Любая помощь или понимание приветствуется.

1 Ответ

1 голос
/ 10 января 2012

Я нашел проблему. Я раздувал ImageViews в ImageSwitcher из макетов XML, но, похоже, это не работает. Создание ImageViews в коде и назначение соответствующих FrameLayout.LayoutParams для каждого действительно работает.

просмотрщик иерархии мне здесь очень помог - он подчеркнул, что параметры макета в ImageViews оказались не такими, как я ожидал.

...