Как сделать просмотр изображения прокручиваемым вместе с представлением сетки в режиме прокрутки - PullRequest
1 голос
/ 17 июня 2020

У меня есть вид изображений и текст над сеткой, которые используются для отображения отзывов / комментариев клиентов. Изображение предназначено для иллюстрации продукта, а текстовое изображение - для описания продукта. Когда я прокручиваю представление сетки, прокручивается только часть представления сетки. Как сделать так, чтобы изображения и текст также прокручивались вверх. щелкните здесь, чтобы просмотреть изображение

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

    <ImageView
        android:id="@+id/choseitem_image"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textColor="@android:color/black"
        android:id="@+id/choseitem_title"
        />
 <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal">
        <TextView
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textColor="@android:color/holo_red_light"
            android:id="@+id/choseitem_price"
            />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            android:id="@+id/score"
            android:textColor="@android:color/black"
            />

 </LinearLayout>
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    android:id="@+id/description"
    android:textColor="@android:color/black"
    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:paddingLeft="20dp"
        android:text="Comment"
        android:textColor="@android:color/black"
        />

    <GridView
        android:id="@+id/comment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </GridView>

</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 24 июня 2020

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

Тем не менее, я хотел бы попытаться уточнить почему это работает. В настоящее время ваш GridView прокручивается в основном потому, что это свойство макета GridView. Как видно из документации «Представление, которое показывает элементы в двумерной прокручивающейся сетке . Элементы в сетке берутся из ListAdapter, связанного с этим представлением». https://developer.android.com/reference/android/widget/GridView

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

Но для вашего конкретного случая использования вместо этого вам потребуется добавить NestedScrollView, поскольку у вас несколько представлений, а не только одно дочернее представление. Как определено, «NestedScrollView похож на ScrollView, но поддерживает роль вложенного родительского и дочернего элемента прокрутки как в новой, так и в старой версии Android. Вложенная прокрутка включена по умолчанию».

https://developer.android.com/reference/androidx/core/widget/NestedScrollView

Надеюсь, что это поможет вам лучше ответить на решение, а не просто использовать данный ответ!

0 голосов
/ 24 июня 2020

Вы можете использовать NestedScrollView, чтобы обернуть все ваше представление, чтобы оно было прокручено.

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
<!--        put your content layout here-->
    </androidx.core.widget.NestedScrollView>

И ваш макет должен выглядеть так

<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/choseitem_image"
            android:layout_width="match_parent"
            android:layout_height="250dp" />

        <TextView
            android:id="@+id/choseitem_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/choseitem_price"
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:textColor="@android:color/holo_red_light"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/score"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@android:color/black"
                android:textSize="15sp" />

        </LinearLayout>

        <TextView
            android:id="@+id/description"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black"
            android:textSize="15sp" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="20dp"
            android:text="Comment"
            android:textColor="@android:color/black"
            android:textSize="15sp" />

        <GridView
            android:id="@+id/comment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        </GridView>

    </LinearLayout>
</androidx.core.widget.NestedScrollView>
...