У меня есть следующий заданный GridView w/stretchMode, установленный в "columnWidth".Android GridView stretchMode с Async ImageView Загрузка
<GridView android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:columnWidth="160dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:listSelector="@drawable/list_selector"
/>
Каждый элемент в GridView структурирован следующим образом.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView android:id="@+id/videoGridItemImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
/>
<TextView android:id="@+id/videoGridItemDuration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#88000000"
android:textColor="#F1F1F1"
android:textAppearance="@android:style/TextAppearance.Small"
android:padding="2dp"
/>
</FrameLayout>
<TextView android:id="@+id/videoGridItemTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:textAppearance="@android:style/TextAppearance.Medium"
android:textColor="#F1F1F1"
android:maxLines="1"
android:background="#88000000"
android:paddingLeft="2dp"
android:paddingRight="2dp"
/>
<TextView android:id="@+id/videoGridItemSubtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:textStyle="italic"
android:textColor="#666"
android:textAppearance="@android:style/TextAppearance.Small"
android:maxLines="1"
android:background="#88000000"
android:paddingLeft="2dp"
android:paddingRight="2dp"
/>
</LinearLayout>
В адаптере GridView, я буду асинхронная загрузка и отображение изображений, передавая URL и ссылки в ImageView к выделенному классу. Класс загружает изображение в растровое изображение, а затем обновляет ImageView с помощью setImageBitmap(). Этот рабочий процесс функционирует должным образом; однако мои изображения не заполняют всю ширину ImageView. На левой/правой стороне имеется небольшое количество подушек. Я понимаю, что могу использовать scaleType = "fitXY", но это не идеально, поскольку оно искажает изображения. Установка атрибута src для ImageView в локальное изображение масштабируется просто с помощью stretchMode = "columnWidth". Я предполагаю, что ImageView масштабируется до исходной ширины столбца, а не растянутой/динамической ширины. Кто-нибудь имеет представление о том, почему это происходит и/или как исправить? Заранее спасибо за вашу помощь.
1. Установка layout_width ImageView в wrap_content просто поместит все дополнения с правой стороны - как показано на половину слева и половину справа. ImageView по-прежнему не заполняет всю ширину столбца по желанию. – ajporterfield
2. Установка scaleType ImageView в centerCrop устраняет проблему перекоса, вызванную fitXY; однако он обрезает изображение, которое также не является идеальным. – ajporterfield
Я вполне уверен, что проблема связана с stretchMode = "columnWidth". Если я использую любое другое значение для stetchMode (включая «none»), изображения отображаются как ожидалось - без обрезки/перекоса и заполнения всей ширины столбца. – ajporterfield