我相信您将不得不操纵与图像对齐的节点位置。
您可以使用下面的代码以编程方式ImageView
在布局中的特定位置添加 an(如果需要,还可以强制大小)。
这只是一个示例,并且正在使用固定的可绘制对象(您应该将其更改为作为参数传递给方法)。您还可以更改它移动已经存在的视图而不是添加。
private ImageView addImageView(RelativeLayout mainLayout, int x, int y, int width, int height, OnClickListener onClickListener){
ImageView imageView = new ImageView(this);
imageView.setAdjustViewBounds(false);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.height = height;
params.width = width;
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setImageDrawable(getResources().getDrawable(R.drawable.marker_red));
//imageView.setBackgroundColor(Color.BLUE);
params.leftMargin = x - width/2;
params.topMargin = y - height/2;
imageView.setOnClickListener(onClickListener);
mainLayout.addView(imageView);
return imageView;
}
如果您需要更多详细信息,请告诉我。
--已编辑--
要在父布局中获得位置,您可以使用getX()
并且getY()
如果您使用的是 API 11 或更高版本。
如果您使用的是 API < 11,那么您可以使用以下方法获取原始位置(在屏幕内):
private boolean inViewBounds(View view, int x, int y){
view.getDrawingRect(outRect);
view.getLocationOnScreen(location);
outRect.offset(location[0], location[1]);
return outRect.contains(x, y);
}
并且您需要将父布局原始坐标减去相对于父级的 obation 坐标。
希望能帮助到你。
问候。