无论设备屏幕大小如何,如何获取添加视图的位置X,Y.

时间:2018-03-15 17:14:57

标签: java android kotlin

我想以编程方式获取视图的位置X或Y(即按钮)但是 在链接(https://blog.takescoop.com/android-view-measurement-d1f2f5c98f75)的解决方案中返回的值是错误的。

我需要这个来限制动画中的y用于钳位功能。

我也有问题以编程方式获得高度和宽度。我可以在这里查看视图(https://stackoverflow.com/a/24035591/9498656 by view.post(new Runnable()) 但就像之前的价值观错误一样。

problem: animated view with restrictions on other view Y

有人可以解释如何获得不同屏幕的X Y高度宽度吗?

2 个答案:

答案 0 :(得分:0)

获取相对于您可以使用的设备屏幕的视图的posX和posX;

int location[] = new int[2];
view.getLocationOnScreen(location);
int posX = location[0];
int posY = location[1];

要获得视图的高度和宽度,您可以使用

view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            view.getHeight(); //height is ready
            view.getWidth(); //width is ready
        }
    });

不要忘记通过调用view.getViewTreeObserver().removeOnGlobalLayoutListener(this);

将ViewTreeObser的监听器移到您的视图中

答案 1 :(得分:0)

以下是我要做的事情:

//Get screen size.
    WindowManager wm = getWindowManager();
    Display disp = wm.getDefaultDisplay();
    Point size = new Point();
    disp.getSize(size);
    int screenWidth = size.x;
    int screenHeight = size.y;

另外,考虑到大多数时候,窗口的大小不等于屏幕的大小,因为你必须考虑屏幕按钮上按钮的像素大小(菜单,回来,打开应用程序)。

希望它有所帮助!