Android Java将高度设置为宽度的一小部分

时间:2015-06-25 04:28:07

标签: java android aspect-ratio

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已变为红色,我不知道在哪里放置此代码。

2 个答案:

答案 0 :(得分:0)

您可以使用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);

答案 1 :(得分:0)

试试这个

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