我正在动态创建一个linearlayout并向其添加一些图像视图和textview。
代码
ScrollView sv = new ScrollView(this);
LinearLayout llay = new LinearLayout(this);
for(int i =0;i<ns;i++){
TextView tv = new TextView(this);
ImageView iv = new ImageView(this);
iv.setLayoutParams(new LinearLayout.LayoutParams(100,100,50));
llay.addView(tv);
llay.addView(iv);
}
运行应用程序
第一台设备:图像视图的大小合适。
第二台设备:图像视图太小。
有没有办法,我可以设置imageview明确的大小,以便它变得与设备无关?
答案 0 :(得分:2)
试试这个......
如果你的差异大小密度的应用使用显示高度/宽度而不是固定值。
Display display = getWindowManager().getDefaultDisplay();
int height = display.getHeight()/10;
int width = display.getWidth()/5;
ScrollView sv = new ScrollView(this);
LinearLayout llay = new LinearLayout(this);
for(int i =0;i<ns;i++){
TextView tv = new TextView(this);
ImageView iv = new ImageView(this);
iv.setLayoutParams(new LinearLayout.LayoutParams(width,height,0));
llay.addView(tv);
llay.addView(iv);
}
答案 1 :(得分:1)
建议使用dp而不是px。
有关dp vs px的详细信息,请访问Support multiple screens
在您的情况下,您以像素为单位设置值。如果您想使用dp,可以使用以下内容:
float x = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());