RecyclerView всегда выше других представлений - PullRequest
0 голосов
/ 14 февраля 2020

Мне кажется, что я прочитал все темы по stackoverflow и не нашел решения.

Проблема в том, что ImageView всегда находится под RecyclerView что бы я ни делал, но мне нужно отобразить ImageView поверх RecyclerView .

Вопрос: Почему это происходит и как я могу это сделать? исправить это?

Пример правильного и неправильного:

enter image description here

Мой XML:

<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:clickable="true"
 android:focusable="true"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:background="@drawable/bottom_style"
 android:overScrollMode="never"
 app:behavior_hideable="false"
 app:behavior_peekHeight="150dp"
 app:layout_behavior="....BottomSheetController.MyBottomSheetBehavior">

 <androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginTop="6dp"
    android:layout_marginBottom="6dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp">

        <....BottomSheetController.MyRecyclerView
            android:id="@+id/recycler_view"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:overScrollMode="never" />

        <ImageView
            android:id="@+id/close"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_button_close" />
    </RelativeLayout>
 </androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.core.widget.NestedScrollView>

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Существует ли какая-либо конкретная c причина, по которой вам нужно обернуть содержимое в RelativeLayout, если не используйте FrameLayout, чтобы исправить вашу проблему, не забудьте установить android:layout_gravity="end|top", чтобы расположить кнопку закрытия сверху- конец. Таким образом, код выглядит примерно так:

<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:clickable="true"
    android:focusable="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bottom_style"
    android:overScrollMode="never"
    app:behavior_hideable="false"
    app:behavior_peekHeight="150dp"
    app:layout_behavior="....BottomSheetController.MyBottomSheetBehavior">

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_marginTop="6dp"
        android:layout_marginBottom="6dp">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp">

            <....BottomSheetController.MyRecyclerView
            android:id="@+id/recycler_view"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:overScrollMode="never" />

            <ImageView
                android:id="@+id/close"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|top"
                android:src="@drawable/ic_button_close" />
        </FrameLayout>
    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.core.widget.NestedScrollView>

Что касается причины, по которой, как я полагаю, RelativeLayout показывал неправильный вывод, было потому, что расстояние просмотров по оси Z установлено на основе Порядок они генерируются. Таким образом, несмотря на то, что ImageView установлен после повторного просмотра, чтобы быть сверху, но держатели внутри генерируются впоследствии и, следовательно, сверху изображения. Если бы это было простое представление, сгенерированное перед просмотром изображения, изображение было бы сверху по желанию.

PS: я не нашел никакой документации для этого, и я просто считаю, что это работает, так что если это не так В случае, если кто-либо может исправить меня.

0 голосов
/ 14 февраля 2020

Попробуйте код ниже

<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:clickable="true"
        android:focusable="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@color/colorAccent"
        android:overScrollMode="never"
        app:behavior_hideable="false"
        app:behavior_peekHeight="150dp"
        app:layout_behavior="....BottomSheetController.MyBottomSheetBehavior">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_marginTop="6dp"
            android:layout_marginBottom="6dp">

            <androidx.coordinatorlayout.widget.CoordinatorLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp">



 <....BottomSheetController.MyRecyclerView
                       android:id="@+id/recycler_view"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:overScrollMode="never" />


            </androidx.coordinatorlayout.widget.CoordinatorLayout>
            <ImageView
                android:id="@+id/close"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:src="@drawable/ic_button_close" />
        </RelativeLayout>

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