Привязка вида для отображения в позиции, по которой щелкнули? - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть RecyclerView, который содержит много изображений. При длительном нажатии на изображение я открываю RelativeView (через setVisibility(View.VISIBLE)), чтобы отобразить «предварительный просмотр» изображения в ImageView, пока не будет отпущен длинный щелчок, и в этот момент я снова скрываю предварительный просмотр. В настоящее время это работает, как и ожидалось, за исключением того, что предварительный просмотр всегда отображается в одном и том же месте на экране.

Есть ли способ привязать предварительный просмотр к позиции, на которую нажал пользователь? В идеале я бы хотел, чтобы нижний угол был выровнен с позицией, в которой пользователь долго щелкает (или, по крайней мере, по нижнему краю). Вот как выглядит мой предварительный просмотр:

enter image description here

Это RecyclerView и макет контейнера предварительного просмотра:

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

    <!-- Recyclerview -->
    <com.sometimestwo.moxie.MultiClickRecyclerView
        android:id="@+id/recycler_zoomie_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- Preview container that gets hidden/unhidden-->
    <RelativeLayout
        android:id="@+id/hover_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center|top"
        android:visibility="gone">

        <TextView
            android:id="@+id/hover_view_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorBgBlackTint"
            android:gravity="center"
            android:textColor="@color/colorWhite"
            android:visibility="visible" />

        <ImageView
            android:id="@+id/hover_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/hover_view_title"
            android:background="@color/colorBgBlackTint"
            android:visibility="visible" />
    </RelativeLayout>

</FrameLayout>

1 Ответ

0 голосов
/ 10 сентября 2018

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

...