gpt4 book ai didi

android - 如何获得 s8 可用屏幕 android?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:14 24 4
gpt4 key购买 nike

我是 android 菜鸟。我关于 18:9 设备可用高度的问题。当我尝试在这些宽高比下获得可用屏幕时,我的应用程序在所有 Android 设备上运行良好,但是当我在 Samsung Galaxy s8 中编译时,它无法正常工作。我正在尝试获取可用的设备屏幕。我已经尝试过这些链接中的方法

https://stackoverflow.com/questions/43628047/how-to-support-189-aspect-ratio-in-android-apps

https://android-developers.googleblog.com/2017/03/update-your-app-to-take-advantage-of.html

我动态地使用

DisplayMetrics 指标 = this.getResources().getDisplayMetrics();
width = metrics.widthPixels;
height = metrics.heightPixels ;

我试过了

private int getSoftButtonsBarHeight() {
// getRealMetrics is only available with API 17 and +
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightPixels;
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightPixels;
if (realHeight > usableHeight)
return realHeight - usableHeight;
else
return 0;
}
return 0;
}

当我尝试设置参数 MATCH_PARENT 高度时,它运行良好。但是我需要找到可用的高度像素来按比例设计我的其他 View 。

其实就是这些代码 DisplayMetrics metrics = this.getResources().getDisplayMetrics();
height = metrics.heightPixels ;
在我的 Activity 中工作,但是当我尝试在我从 FramaLayout 扩展并添加到 Activity 的另一个窗口中使用它时,它不起作用。

这是我的代码块

public class StudentLoginActivity extends Activity {  ...
FrameLayout.LayoutParams containerParams = new ScrollView.LayoutParams(width, height-sb);
container = new FrameLayout(this);
container.setLayoutParams(containerParams);
container.setBackgroundColor(Color.rgb(248,248,248));
loginStudentView = new StudentLoginView(this);
container.addView(loginStudentView); ...

   public class StudentLoginView extends FrameLayout { ...
FrameLayout.LayoutParams cp = new FrameLayout.LayoutParams(width, height);
setLayoutParams(cp); ...

但这个问题与 android navigationBar 高度有关,因为当我显示导航栏时没有问题,但如果我隐藏 navigationBar,它不会调整大小应用程序仍在工作,屏幕上有一个导航栏(但我隐藏了 navigationBar)。

我的问题与此链接非常相​​似

android Navigation Bar hiding and persantage of usable screen overlap

最佳答案

您可以使用 decorview 获得可用高度(即使在 Galaxy S8 上有或没有显示 NavBar):

    //Get the correct screen size even if the device has a hideable navigation bar (e.g. the Samsung Galaxy S8)
View decorView = getWindow().getDecorView(); //if you use this in a fragment, use getActivity before getWindow()
Rect r = new Rect();
decorView.getWindowVisibleDisplayFrame(r);
int screenHeight = r.bottom; // =2220 on S8 with hidden NavBar and =2076 with enabled NavBar
int screenWidth = r.right; // =1080 on S8

关于android - 如何获得 s8 可用屏幕 android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807174/

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