在 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));
}
但onSizeChanged
和setLayoutParams
已变为红色,我不知道在哪里放置此代码。
答案 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));