【问题标题】:Android – Am I Doing this Right?Android – 我做对了吗?
【发布时间】:2015-09-05 01:37:31
【问题描述】:

我正在构建一个需要以编程方式添加布局的 Android 应用程序。这句话似乎让我很难过:

RelativeLayout.LayoutParams rightScreenParams = new RelativeLayout.LayoutParams(
            (int) (screenWidth * 0.25), (int) (screenHeight * 0.94));

变量 screenWidth 和 screenHeight 是屏幕的宽度和高度,以像素为单位。布局应该是父布局宽度的 25%,高度的 94%。当我将参数添加到布局中,然后添加布局时,它会占用整个屏幕,而不是我提到的尺寸。

那么我是否正确使用了这个构造函数?任何帮助表示赞赏。感谢您的宝贵时间。

编辑:

我在 onCreate() 中得到 screenWidth 和 screenHeight:

DisplayMetrics displayMetrics = new DisplayMetrics();
    WindowManager wm = (WindowManager) getApplicationContext()
            .getSystemService(Context.WINDOW_SERVICE);
    wm.getDefaultDisplay().getMetrics(displayMetrics);
    screenWidth = displayMetrics.widthPixels;
    screenHeight = displayMetrics.heightPixels

即使以像素为单位的实际高度为 1280,变量 screenHeight 仍返回 1184。变量 screenWidth 似乎没问题。那么如何获得以像素为单位的实际屏幕高度呢?

【问题讨论】:

  • 您能否发布代码的其他部分 - 即创建和添加布局?还有你如何获得屏幕宽度和高度?
  • screenWidth/4, screenHeight * 94/100 在某些情况下可能更快

标签: java android android-layout


【解决方案1】:
RelativeLayout.LayoutParams rightScreenParams = new RelativeLayout.LayoutParams(
           RelativeLayout.LayoutParams.Wrap_Parent,samehere);
View.setLayoutParams(rightScreenParams);//your view
//after you add it to the layout then you call
rightScreenParams.width = (int) (screenWidth * 0.25);
rightScreenParams.height = (int) (screenHeight * 0.94);

它是同样的东西,但它强制 android。

【讨论】:

  • 大概你的意思是在调用setLayoutParams之前更改值,对吧?
  • 似是而非的我的意思是每个字母字母。如果是对我来说,我会做的就是View.getLayoutParams().width = myWidth; -(使用得合情合理,因为你大概使用了:)) 哈哈@SanjayManohar