自定义 View 设置为全屏时的高度比 DisplayMetrics 获得的高度大

发布于 2022-09-07 00:20:15 字数 1144 浏览 27 评论 0

通过使用代码:

DisplayMetrics dm = getResources().getDisplayMetrics();
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;

Log.e(TAG, "W = " + dm.widthPixels + ", H = " + dm.heightPixels);

获得到屏幕的宽和高,在我测试的手机上,screenWidth = 1440screenHeight = 2400
屏幕宽高


然后,自定义 View,设置 layout_widthlayout_height 都是 match_parent

android:layout_width="match_parent"
android:layout_height="match_parent"

onDraw 方法里面,输出该 View 的 width 和 height:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    W = this.getWidth();
    H = this.getHeight();

    Log.e("RegionSelectorView", "W: " + W + ", H: " + H);
}

发现的输出都是:
onDraw 的 Log 输出

请问大家这是为什么,该如何解决这个不一致的问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

春花秋月 2022-09-14 00:20:15

没记错的话,第一个方法不包含状态栏高度

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文