将LinearLayout设置为不同的屏幕尺寸

时间:2016-09-10 07:47:30

标签: android

我有一个LinearLayout,它是以编程方式编写的:

listLinear=new LinearLayout(this);
LinearLayout.LayoutParams listParam = new LinearLayout.LayoutParams(80,
    ViewGroup.LayoutParams.MATCH_PARENT);
listLinear.setLayoutParams(listParam); 

80是我的listLinear宽度。我希望我的LinearLayout宽度为80.我的LinearLayout在4.5英寸屏幕上看起来非常完美,但是当我在5英寸显示屏上测试时,它只是收缩并且看起来很小。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

问题是LinearLayout.LayoutParams的构造函数需要宽度/高度(以像素为单位)。

为使您的布局在所有屏幕尺寸上看起来都一样,您应该在 dip (与密度无关的像素)中定义其宽度。

这样的事情应该有效:

listLinear = new LinearLayout(this);

int widthDp = 50; // desired width in dp, adjust this as you'd like

// converting dp to pixels
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int widthPx = Math.round(
    widthDp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));

LinearLayout.LayoutParams listParam = new LinearLayout.LayoutParams(widthPx,
    ViewGroup.LayoutParams.MATCH_PARENT);

listLinear.setLayoutParams(listParam);

答案 1 :(得分:0)

在setcontentview之后

使用此代码

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

int width = dm.widthPixels;
int height = dm.heightPixels;
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getWindow().setLayout((int) (width), (int) (height * .2));