我在全屏 FrameLayout 中有一个小的 ImageView,我想设置它,以便当我触摸 FrameLayout 时,imageview 移动到该位置。
我已经阅读了我能找到的关于移动 ImageView 的所有其他 SO 问题,但我还没有看到为什么我的解决方案还不起作用。
在扩展 FrameLayout 的自定义视图中:
@Override
public boolean onInterceptTouchEvent(MotionEvent event){
if(event.getActionMasked() == MotionEvent.ACTION_DOWN){
ImageView iv = (ImageView) this.findViewById(R.id.draggedImage);
FrameLayout.LayoutParams params = (LayoutParams) iv.getLayoutParams();
params.leftMargin = (int) event.getX();
params.bottomMargin = (int) event.getY();
iv.setLayoutParams(params);
iv.invalidate();
invalidate();
}
return true;
}
我已经更改了 layoutparams 边距以反映新的触摸位置,并使 imageview 和 framelayout 无效(不确定我应该做什么),但 imageView 没有让步(只是始终位于左上角框架)。
我还验证了当我触摸屏幕并且参数设置为合理的 X 和 Y 值时,会调用此方法。
我的布局:
<CustomFrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- some other unrelated views -->
<ImageView
android:id="@+id/draggedImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/pause" />
</CustomFrameLayout>
编辑:应该提到我正在尝试以 API 级别 10 为目标,所以我不能使用任何 Honeycomb 视图方向优势 :(