固定视图以显示在被单击的位置?

时间:2018-09-10 05:03:02

标签: android android-layout android-imageview android-relativelayout

我有一个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 :(得分:1)

您可以使用PopupWindow。这样,您可以将特定视图设置为锚点以显示一个窗口,并且可以在窗口内部显示预览。