Высота TableRow выдувается

У меня есть TableLayout с 3 TableRows, каждая TableRow имеет 3 ImageView. Каждый ImageView имеет fitCenter для типа Scale, а также вес и ширину для этого stackoverflow ответ. Теперь все изображения масштабируются, чтобы поместиться в строку, но каждая строка намного выше, чем должна быть. Вот отрывок из xml:

<TableLayout android:id="@+id/TableLayout01"
android:layout_height="wrap_content"
android:padding="10dip"
android:stretchColumns="0,1,2"
android:shrinkColumns="0,1,2"
android:layout_weight="1"
android:layout_width="wrap_content">
    <TableRow android:id="@+id/TableRow01"
    android:layout_width="fill_parent"
    android:layout_gravity="center_vertical|center_horizontal"
    android:baselineAligned="false"
    android:gravity="center_vertical|center_horizontal"
    android:layout_height="wrap_content">
        <ImageView android:id="@+id/image1"
        android:src="@drawable/avocado3"
        android:scaleType="fitCenter"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="wrap_content"/>
        <ImageView android:id="@+id/image2"
        android:src="@drawable/avocado3"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:scaleType="fitCenter"/>
        <ImageView android:id="@+id/image3"
        android:src="@drawable/avocado3"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:scaleType="fitCenter"/>
    </TableRow>
...
</TableLayout>

А вот и первая строка:

первая строка

И конец первого ряда и начало второго:

вторая строка

ImageViews настроены на небольшой размер (@ drawable / avocado3), а в onCreate () действия он извлекает 9 изображений из Интернета и вызывает setImageBitmap ().

У кого-нибудь есть идеи о том, что я делаю неправильно?


person chad    schedule 11.11.2010    source источник


Ответы (1)


По умолчанию scaleType изменяет только размер фактического изображения, но не размер окружающего ImageView. Поскольку высота ImageView установлена ​​на wrap_content, она займет все пространство, необходимое для отображения полного изображения, а затем масштабирует изображение, чтобы оно соответствовало его ширине.

Попробуйте установить для adjustViewBounds значение true. Если это не помогает, попробуйте установить фиксированный layout_height или поиграйте со свойством maxHeight.

Также может оказаться полезным заглянуть внутрь средства просмотра иерархии: http://developer.android.com/guide/developing/tools/hierarchy-viewer.html.

person Timo Ohr    schedule 11.11.2010
comment
Милая! AdjustViewBounds сделал это! Большое спасибо. Я только что проделал другую работу по масштабированию изображений перед вызовом setImageBitmap (); пора взломать этот хак. - person chad; 12.11.2010