【问题标题】:Android Java set the height to a fraction of widthAndroid Java将高度设置为宽度的一小部分
【发布时间】:2015-09-11 12:29:44
【问题描述】:

Android Studio 中开发应用 我将ImageView 的宽度设置为“match_parent”。 我正在尝试将其高度设置为“宽度/ 3”。换句话说,无论运行它的设备的屏幕尺寸如何,我都试图保持 3:1 的纵横比。 我知道我不能在 XML 中做到这一点,因为您只能将值设置为文字值。 在运行时我可以使用这个语句。

img.getLayoutParams().height = img.getWidth() / 3; 

这会起作用,但如果我把它放在onCreate 或 onStart 方法中,getWidth 将返回 0,因为尚未创建视图。必须有一个地方我可以放置此代码,以便它在Activity 启动后运行。

我试过了:

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    float RATIO = 1/3;
    setLayoutParams(new RadioGroup.LayoutParams((int)RATIO * w, w));
}

但是onSizeChangedsetLayoutParams 变成了红色,我不知道我需要把这段代码放在哪里。

【问题讨论】:

    标签: java android aspect-ratio


    【解决方案1】:

    你可以像下面这样使用DisplayMetrics

    DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            height = metrics.heightPixels;
            width = metrics.widthPixels;
           int homePageButtonPanelHeight = height / 7;
    
           LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
                homePageButtonPanelHeight - 5, homePageButtonPanelHeight - 5);
           LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(
                homePageButtonPanelHeight, homePageButtonPanelHeight + 30);
    
          RelativeLayout.LayoutParams paramIcon = new RelativeLayout.LayoutParams(
                homePageButtonPanelHeight - 5, homePageButtonPanelHeight - 5);
    
    
          icon.setLayoutParams(paramIcon);
    
          btn1.setLayoutParams(params2);
    
          btn2.setLayoutParams(params2);
    

    【讨论】:

      【解决方案2】:

      试试这个

      imageView.setLayoutParams(new LayoutParams(width, width/3));
      

      【讨论】:

      • 感谢两位的建议。 Prabhuraj 我可以用行 img.getLayoutParams().height = img.getWidth() / 3; 设置高度没有问题但问题在于将该行放在活动完成加载后将执行的位置。但我明天会尝试 anusha 建议的“指标”解决方案,然后我会回复。再次感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多