我在ImageView
XML文件中使用android:layout_centerInParent="true"
在布局的中心放置RelativaLayout
个图钉。
现在我希望将绿点绘制在与画布上的图钉相同的位置。
注意:绿点不是视图。它在画布上由canvas.drawCircle();
也就是说,我必须以编程方式获取引脚的坐标。
那么如何使用代码获取android:layout_centerInParent="true"
的坐标?
答案 0 :(得分:2)
我的猜测是
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, 1);
您可以按relativeLayout.getLayoutParams()
获取layoutParams,并且在完成修改后不要忘记setLayoutParams
。
答案 1 :(得分:2)
要获得父级的宽度和高度,您可以执行此操作。
RelativeLayout parent = (RelativeLayout) findViewById(R.id.yourRelativeLayout);
int width = parent.getWidth();
int height = parent.getHeight();
然后你可以将这些数字除以2并将其设置为绿点的坐标,它应该出现在屏幕中间。为此,您的画布大小必须与相对布局相同。
但要注意,您需要在创建活动后调用getWidth()
和getHeight()
方法,否则最终会得到零。 See this answer
答案 2 :(得分:1)
因此,您要绘制的画布位于RelativeLayout包含的视图中,但您想在RelativeLayout的中心绘制点?
是的,这正是我想要做的!
假设画布视图是RealtiveLayout的直接子视图,这应该可以。
您可以在布局上使用getWidth() / 2
和getHeight() / 2
获取布局的中心,如其他人所述。但是,您还必须弄清楚画布的原点。为此,您可以在画布视图上使用getLeft()和getTop()。然后你只需从左边减去中心x,从顶部中心y得到你的最终位置。
示例:强>
假设每个网格线为1
。 RelativeLayout
是大黑色矩形,Canvas
视图是蓝色矩形。中心点的坐标为4,6
。使用left / top,您将获得画布原点(红点)的1,4
。减去,得到3,2
,这是绿点的本地画布坐标。
答案 3 :(得分:0)
在画布中心绘制点应该只是将视图的宽度和高度除以2。如果你想让它位于引脚的底部(而不是真正的中心),那么只需将引脚高度的一半加到圆的y
值即可。