检查屏幕尺寸不起作用

3
这是我用来检查屏幕尺寸并改变FrameLayout大小的代码。
    FrameLayout topLayout = (FrameLayout) findViewById(R.id.topLayout);

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    double x = Math.pow(dm.widthPixels/dm.xdpi,2);
    double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
    double screenInches = Math.sqrt(x + y);

    if (screenInches < 5) topLayout.setLayoutParams(new LinearLayout
    .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,170));
    if (screenInches >= 5 && screenInches < 7) topLayout
    .setLayoutParams(new LinearLayout 
    .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 200));
    else topLayout.setLayoutParams(new LinearLayout
    .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 230));

我不知道为什么它没有工作。

如果有错误,是什么? - Gerard Rozsavolgyi
没有错误。只是FrameLayout的高度被减小了... - DevOma
3个回答

1

您可以使用DisplayMetrics

这是一种描述显示器一般信息的结构,例如其大小、密度和字体缩放等。

   DisplayMetrics metrics = getResources().getDisplayMetrics();

   int DeviceTotalWidth = metrics.widthPixels;
   int DeviceTotalHeight = metrics.heightPixels;
   FrameLayout topLayout = (FrameLayout) findViewById(R.id.topLayout);

   topLayout.getLayoutParams().height= (DeviceTotalHeight/4); // Use Your Logic

现在你可以简单地使用你的 screenInches 逻辑。

@Omuradil 很高兴能够帮助。继续前进吧。 - IntelliJ Amiya

0
DisplayMetrics displaymetrics = new DisplayMetrics();
((Activity)mContext)getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;

1
Darshan Kachhadiya,不太理解......您能稍微解释一下部署的意思吗? - DevOma
你可以获取设备的高度,然后设置设备高度的百分比。例如,如果你使用了一个高度为设备高度10%的帧布局,则可以将该帧布局的高度设置为10%。 - Darshan Kachhadiya
如果您在活动之外使用此代码,则需要mContext,或者您的问题是屏幕大小不起作用,因此我提供了获取屏幕大小的解决方案。 - Darshan Kachhadiya
你没理解我的意思。我需要改变FrameLayout的高度,但是不起作用。 - DevOma

0

为了更改布局参数,您需要执行以下操作:

topLayout.getLayoutParams().width = 100;
topLayout.getLayoutParams().height = 100;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接