以编程方式在 RelativeLayout 中重新居中按钮

Programmatically re - center button in RelativeLayout

我正在制作一个游戏,用户应该在计时器到达一秒之前尝试按下一个按钮,并且每次用户单击该按钮时按钮都会移动到一个随机位置。 开始时按钮居中,但显然会在游戏结束时随机放置。我有一个重启按钮,我想将按钮重新居中以便游戏可以重新开始。

有什么帮助吗?

我会为此使用 View#setTranslationX() and View#setTranslationY() methods or the View#setX() and View#setY() 方法。使用这些 属性 方法比使用 View#setLayoutParams() 框架要容易得多。

View#setTranslationX/Y 会将视图相对于其在屏幕上的当前位置移动一定数量的像素。所以 view.setTranslationX(5) 会将其向右移动五个像素,view.setTranslationX(-5) 会将其向左移动五个像素,view.setTranslationY(5) 会将其向下移动五个像素,而 view.setTranslationY(-5) 会将其移动向上五个像素。 view.setTranslationX(0) 会将其移回其在 x-axis 上的原始位置,而 view.setTranslationY(0) 会将其移回 y-axis.

View#setX/Y() 方法会将视图移动到父视图上的设定点,轴心位于视图的左上角。所以 view.setX(0) 会将其移动到父视图的左侧,而 view.setY(0) 会将其移动到父视图的顶部。您可以获取父 View 的宽度和高度,以确定将它们放在 View 的哪个位置。您可以使用 view.getX()view.getY() 来检索它们的原始位置。