我有一个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英寸显示屏上测试时,它只是收缩并且看起来很小。
为什么会这样?
答案 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)
使用此代码
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));