У меня проблемы с v7.widget.RecyclerView. У меня есть «сообщение» от пользователя приложения, в котором отображаются все изображения, которые они добавили ранее, а также любые другие вложения (документы, видео и т. Д. c.). Есть возможность редактировать существующие сообщения.
У меня есть файл EditPost xml, в который встроен файл с именем attachment_item. Это, в свою очередь, включает файл xml с именем EditAttachmentsLayout. При необходимости я могу опубликовать код из первых двух файлов, но не думаю, что проблема в этом.
Страница EditAttachmentsLayout использует 2 RecyclerViews; один для изображений, а другой для других файлов. Код находится здесь:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/edit_images_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v7.widget.RecyclerView
android:id="@+id/edit_attachments_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Проблема в том, что, когда переработчик вложений имеет элементы для отображения, он накладывает какой-то оверлей поверх первого (и только первого) изображения, например:
Если я нажму кнопку «Крестик» на миниатюре (или кнопку «крестик» на самом вложении), вложение будет удалено, а затем появится изображение в таком виде:
Это как если бы переработчик накладывал какой-то оверлей поверх первого изображения в списке. Я пробовал всевозможные вещи, чтобы решить эту проблему, например, добавлял интервал, чтобы попытаться принудительно разделить два ресайклера, и переключаться на GridView, как показано ниже:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:rowCount="4">
<android.support.v7.widget.RecyclerView android:id="@+id/edit_images_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_row="0"
android:scrollbars="none"/>
<Space
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_marginBottom="10dp"/>
<android.support.v7.widget.RecyclerView android:id="@+id/edit_attachments_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_row="2"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
android:scrollbars="none"/>
</GridLayout>
К сожалению, проблема не устранена. Изображение всегда закрыто, пока я не удалю вложение.
Есть идеи ...? Я в тупике. Итак, вот наложение, которое добавляет кнопку удаления к изображению, когда сообщение находится в режиме редактирования. Приносим извинения за то, что не включили его ранее, я не создавал это приложение, поэтому не знаю о нем всего:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_marginRight="20dp"
android:layout_width="@dimen/edit_image_size"
android:layout_height="@dimen/edit_image_size">
<ImageView
android:background="@drawable/image_background"
android:id="@+id/attachment_image"
android:scaleType="fitXY"
android:layout_width="@dimen/edit_image_size"
android:layout_height="@dimen/edit_image_size"/>
<ImageButton
android:background="@drawable/rounded_button_secondary"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_alignTop="@id/attachment_image"
android:layout_alignRight="@id/attachment_image"
android:id="@+id/delete_attachment_button"
android:src="@drawable/icon_of_cross"
android:tint="@color/white"
android:padding="5dp"
android:layout_margin="5dp"
android:layout_width="25dp"
android:layout_height="25dp" />
Просто для некоторой ясности я добавил еще несколько скриншоты, с множеством изображений и вложений. Если в сообщении есть и изображения, и вложения, первое загружаемое изображение (крайнее правое) будет иметь оверлей:
Один раз Я нажимаю кнопку с крестиком, чтобы удалить первое вложение, вложение исчезло (как и ожидалось), и изображение снова отображается:
Очень странно!