Прозрачный TextView поверх RecyclerView - PullRequest
0 голосов
/ 28 октября 2019

У меня есть это действие, когда у меня есть RecyclerView, но над ним у меня есть TextView, теперь, когда я прокручиваю в RecyclerView, RelativeLayout с текстом остается в верхней части экрана и не прокручивается вместе с ним. Теперь моя проблема в том, что представление RelativeLayout прозрачно, поэтому, когда я прокручиваю в RecyclerView, текст в RelativeLayout будет лежать поверх списка текстовых элементов в RecyclerView, другими словами, чтобы упростить то, что я имею в виду, «текст натекст ", если это имеет смысл. Как можно, чтобы RelativeLayout не был прозрачным, чтобы элементы RecyclerView прокручивались «позади» и не были видны «под» TextView, или как я могу сделать так, чтобы весь макет прокручивался вместе с RecyclerView?

(Даже если я изменю цвет фона RelativeLayout, текст в RecyclerView будет виден через него)

Вот XML-код для этого действия:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".Activity"
    android:background="@drawable/gradient_background">

    <RelativeLayout
        android:id="@+id/relativeLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:background="@color/colorPrimary">

        <View
            android:id="@+id/lineView"
            android:layout_width="30dp"
            android:layout_height="0.5dp"
            android:background="@drawable/divider_line"
            android:layout_centerVertical="true"/>

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="24sp"
            android:layout_toEndOf="@id/lineView"
            android:layout_margin="8dp"/>

    </RelativeLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="16dp"
        app:layout_constraintTop_toBottomOf="@+id/relativeLayout"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Используйте NestedScrollView, чтобы сделать весь вид прокручиваемым

<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:fillViewport="true"
    tools:context=".Activity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/gradient_background">

        <RelativeLayout
            android:id="@+id/relativeLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary">

            <View
                android:id="@+id/lineView"
                android:layout_width="30dp"
                android:layout_height="0.5dp"
                android:background="@drawable/divider_line"
                android:layout_centerVertical="true"/>

            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="24sp"
                android:layout_toEndOf="@id/lineView"
                android:layout_margin="8dp"/>

        </RelativeLayout>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="16dp"/>

    </LinearLayout>
</androidx.core.widget.NestedScrollView>
1 голос
/ 28 октября 2019

Можно ли сделать RelativeLayout непрозрачным, чтобы элементы RecyclerView прокручивались «позади»?

Просто измените макет ограничения на линейный макет.

Как мне сделать так, чтобы весь макет прокручивался вместе с RecyclerView?

Логика : для этого вам нужно будет включить относительный макет в файл XML, гдеВы надуваете контент RecyclerView. Теперь это будет раздувать Относительное расположение каждый раз, когда верно.

Таким образом, чтобы преодолеть эту проблему, независимо от того, что вы передаете в конструктор RecyclerView, возьмите флаг / счетчик, раздувайте Относительный макет только тогда, когда счетчик равен нулю / установите флаг и когда счетчик больше 0или если установлен флаг, то скрыть Относительную компоновку.

Таким образом, вы бы имели прокрутку Относительная компоновка с содержимым RecyclerView и раздували только один раз.

...