Привязать вид к месту, по которому щелкнули мышью?

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

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

Привязать вид к месту, по которому щелкнули мышью?

Это макет контейнера 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
108
1

Ответы 1

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

Другие вопросы по теме