我真的一直在努力解决这个问题,无论我做什么,我都会让弹出窗口出现在我不想要的地方。我希望它出现在我点击/触摸的位置,或者在我点击图像时触摸的位置有一点偏移。
这是我在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>
答案 0 :(得分:0)
我是否应该将showAtLocation的第一个参数设为根视图,这样我才能包含整个布局而不仅仅是视图所在的布局?
没有。这是弹出窗口应该固定的视图,因此它应该是触发弹出窗口的那个。
此外,我“不知道该把什么放在这里”,因为我无法得到我的y 协调工作。
你过度复杂了。如果你用第一次调用锚定它,你不需要设置x和y,只需要设置高度和宽度(顺便说一下,你应该根据屏幕密度来计算它)。
注:
就锚定到视图而言,PopupMenu具有更智能的行为,但仅显示菜单。但是,您可以浏览源代码以查看它们如何处理布局。