Как адаптировать изображения с CardView? - PullRequest
0 голосов
/ 06 апреля 2020

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

Я адаптирую следующую Android галерею изображений:

https://medium.com/@moforemmanuel / android -simple-image-gallery-30c0f00abe64

Я хочу что-то вроде этого:

enter image description here

Но, запустив мой код, я получаю такой результат, когда у меня более одного изображения: enter image description here

А код, на котором я основывался, вы можете увидеть ниже:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="190dp"
    android:layout_height="190dp">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="1dp"
        android:layout_marginLeft=".5dp"
        android:layout_marginRight=".5dp"
        android:layout_marginBottom=".5dp"
        app:cardCornerRadius="1dp">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="center"
                tools:ignore="ContentDescription" />

        </FrameLayout>


    </androidx.cardview.widget.CardView>

</RelativeLayout>

Что я должен изменить в своем коде, чтобы я мог изменять размер изображений и при этом сохранять их маржа, чтобы у меня всегда был адаптивный макет?

Большое спасибо!

PS: Я попробовал то, что предложил Дхармарадж, но затем я получил следующий макет: enter image description here

Изменяя android:layout_width и android:layout_height на "200sp", он по-прежнему перекрывается, как вы можете видеть ниже:

enter image description here

Для загрузки изображений я использую эти две функции: enter image description here

1 Ответ

0 голосов
/ 06 апреля 2020

Попробуйте это:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<androidx.cardview.widget.CardView
        android:layout_width="100sp"
        android:layout_height="100sp"
        android:layout_marginTop="1sp"
        android:layout_marginLeft="1sp"
        android:layout_marginRight="1sp"
        android:layout_marginBottom="1Sp"
        app:cardCornerRadius="1sp">

  <RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_margin="5sp>

    <ImageView
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_center="true" />

  </RelativeLayout>
</androidx.cardview.widget.CardView>

Я просто заменил FrameLayout на RelativeLayout для простоты, и, пожалуйста, назначьте постоянную высоту и ширину для вида карты. Не назначайте постоянную высоту и ширину основному макету. Это исправило эту проблему для меня. Пожалуйста, дайте мне знать, если вам нужно больше разъяснений в комментариях.

Кстати, атрибут android:src на изображении отсутствует. Или вы назначаете изображение динамически?

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