【发布时间】:2018-12-02 11:35:15
【问题描述】:
我试过这个(设置为按钮):
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
lastTouchXonWindow = event.getX() + v.getX();
lastTouchYonWindow = event.getY() + v.getY();
}
return false;
}
当视图在活动的唯一一个布局中时有效,但如果它在另一个布局中不起作用,因为 v.getX() 给我父布局中的 X 位置而不是窗户。
这是一个活动布局的例子:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<!-- Some Widgets ...-->
<LinearLayout
android:id="@+id/ChallengeLinearChoix12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<Button
android:id="@+id/ChallengeButtonChoix1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="01"
style="@style/TresGrand"/>
<Button
android:id="@+id/ChallengeButtonChoix2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="02"
style="@style/TresGrand"/>
</LinearLayout>
</LinearLayout>
FurtherMore 我试过这个会产生错误“无法解析 getY() 方法”:
lastTouchY = event.getY() + v.getY() + v.getParent().getY();
【问题讨论】:
-
使用 event.getRawX(), event.getRawY()。可以根据整个窗口获取触摸坐标。
标签: java android layout view widget