我有一个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英寸的屏幕上进行测试时,它会缩小并且看起来很小。
为什么会这样呢?
问题是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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句