我的应用程序只是一个修改后的 ImageViewer,带有缩放和拖动选项。包含修改后的 Imageviewer 有一个 RelativeLayout(我想用作 AbsoluteLayout)。
然后,可以将新元素添加到布局中,以将它们放置在图像的某些点中。元素的像素位置 (x, y) 在数据库中,所以我想没有其他方法可以以编程方式添加它们,而不是使用 XML。
然后每次执行拖动或缩放操作时更新这些元素的位置。
问题是图像的像素与RelativeLayout中的像素不匹配!因此,这些项目“或多或少”位于但不在正确的位置(离 (0,0) 越远,错误越大)。
我已经尝试过的事情:
尝试不同的转换,因为问题可能与位图和布局之间的密度差异有关:
Resources r = getResources(); float x = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, r.getDisplayMetrics());
尝试在布局中使用不同的方法来设置边距:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.leftMargin = (int) newPosition.x; params.topMargin = (int) newPosition.y; element.setLayoutParams(params);
我还想使用 XML 中的 RelativeLayout 可用的选项,但我真的无法以编程方式找到它,但我可以找到指定维度的方法,我的意思是:
android:layout_marginLeft ="50px" // or "50mm", or dp, or inches...