如何将视图放置在特定位置(x、y 坐标)

ami*_*gal 5 android runtime view coordinates android-relativelayout

View我在将视图(我的类扩展)放置在特定位置时遇到问题。我设计了一款将屏幕视为网格的游戏。我从用户那里获取特定视图的 x 和 y 坐标(我有不同类型的视图)。

我的第一个任务是在其位置上设置正确的视图。我该怎么做?我用的RelativeLayout是屏幕。

PS我不想使用AbsoluteLayout参数,因为它被截断了。

wsg*_*gfz 2

这不是实现它的最佳方法,但它是一个解决方案......

创建一个扩展您的父级ViewGroup(例如RelativeLayout或其他一些ViewGroup)的类。在 override 中找到你自己的观点onFinishInflate()

重写该onLayout()方法并在调用后手动布局您自己的视图super.onLayout()

最后,每次你想刷新自己视图的位置时,只需调用requestLayout().

下面是一个示例:

private AwesomeView mMyView;
private int mYourDesiredX;
private int mYourDesiredY;

@Override
public void onFinishInflate() {
    super.onFinishInflate();
    if (mMyView == null) {
        mMyView = (AwesomeView)findViewById();
    }
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    mMyView.layout(mYourDesiredX,
            mYourDesiredY,
            mYourDesiredX + mMyView.getWidth(),
            mYourDesiredY + mMyView.getHeight());
}
Run Code Online (Sandbox Code Playgroud)

但这不是一个有效的解决方案。

如果您正在制作游戏,请尝试SurfaceView甚至GLSurfaceView使用自己绘制对象Canvas