在我单击的图像上/附近显示一个弹出窗口

时间:2013-10-07 23:30:54

标签: android popup

我真的一直在努力解决这个问题,无论我做什么,我都会让弹出窗口出现在我不想要的地方。我希望它出现在我点击/触摸的位置,或者在我点击图像时触摸的位置有一点偏移。

这是我在xml中为点击图像时设置的方法:

public void loadPopUp(View v) {

    popUp.showAtLocation((View) v.getParent().getParent(),
            Gravity.NO_GRAVITY, 0, 0);
    popUp.update(v.getLeft(), "No clue what to put here", 300, 80);

}

关于弹出窗口的两件事,我只是不确定。我是否应该将showAtLocation的第一个参数设置为根视图,以便我包含整个布局而不仅仅是视图所在的布局?

此外,我“不知道该把什么放在这里”,因为我无法让我的y坐标起作用。我的x(v.getLeft())很好,因为我的应用程序不会左右移动,只是上下移动是我努力获取用户点击图像的位置。

XML:

<ScrollView xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="small" >

<LinearLayout
    android:id="@+id/godOverview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

<LinearLayout
        android:id="@+id/godItemRowOneLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/godItem1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:clickable="true"
            android:contentDescription="@string/god_recommended_item_1"
            android:onClick="loadPopUp"
            android:paddingBottom="3dp"
            android:paddingTop="3dp"
            android:src="@drawable/ic_launcher" />

        <ImageView
            android:id="@+id/godItem2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:clickable="true"
            android:contentDescription="@string/god_recommended_item_2"
            android:onClick="loadPopUp"
            android:paddingBottom="3dp"
            android:paddingTop="3dp"
            android:src="@drawable/ic_launcher" />

        <ImageView
            android:id="@+id/godItem3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:contentDescription="@string/god_recommended_item_3"
            android:onClick="loadPopUp"
            android:paddingBottom="3dp"
            android:paddingTop="3dp"
            android:src="@drawable/ic_launcher" />

    </LinearLayout>
</LinearLayout>

</ScrollView>

1 个答案:

答案 0 :(得分:0)

  

我是否应该将showAtLocation的第一个参数设为根视图,这样我才能包含整个布局而不仅仅是视图所在的布局?

没有。这是弹出窗口应该固定的视图,因此它应该是触发弹出窗口的那个。

  

此外,我“不知道该把什么放在这里”,因为我无法得到我的y   协调工作。

你过度复杂了。如果你用第一次调用锚定它,你不需要设置x和y,只需要设置高度和宽度(顺便说一下,你应该根据屏幕密度来计算它)。

注:

就锚定到视图而言,PopupMenu具有更智能的行为,但显示菜单。但是,您可以浏览源代码以查看它们如何处理布局。