gpt4 book ai didi

Android:屏幕底部坐标超出可见区域

转载 作者:行者123 更新时间:2023-11-30 00:22:04 31 4
gpt4 key购买 nike

我正在尝试创建允许用手指移动 View 的控件。为此,我遵循了 this post 的建议。 .

但是提供的方法需要一些修改,以防止我的 View 移出屏幕。我找到了如何获取 maxYmaxY 坐标 - 对于我的 Samsung Galaxy A6,它是 1080x1920。但问题是,我的 maxY 超出了设备可见的底部边缘。

所以当达到 Y 大约 1650 时,我的控制几乎消失了。多 300 个像素有什么用。我可以假设,这是 NavigationBar 高度 + 我的控件 View 高度,但这也没有按预期放置我的控件。

我用这个方法定义最大坐标。

private void setMaxCoordinates(int viewWidth, int viewHeight) {
Display display = getWindowManager().getDefaultDisplay();
Point displaySize = new Point();
display.getSize(displaySize);
maxX = displaySize.x - viewWidth;
maxY = displaySize.y - viewHeight;
}

请帮我定义正确的公式来检测底边坐标。

最佳答案

我找到了解决方案。首先,我在 WindowManager 的帮助下获取底部坐标是错误的。这只是以像素为单位提供屏幕高度,与容器无关。因此,要以这种方式检测底部坐标,您必须考虑:

  • StatusBar 高度。

  • NavigationBar 高度。

  • 所有位于容器上方的 View 的高度。

  • 您自己的控制 View (在我的例子中是 ImageView)的高度。

所以公式看起来像这样。

maxY = windowHeight - (statusBarHeight + navBarheight + allUpperViewsHeight + yourViewHeight)

定义容器 bootom 的正确方法是获取容器的高度并减去控制高度。

maxY = containerHeight - yourViewHeight;

关于Android:屏幕底部坐标超出可见区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46101498/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com