在动态Linearlayout中设置Imageview的大小

时间:2012-09-02 08:24:01

标签: android android-layout android-imageview

我正在动态创建一个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明确的大小,以便它变得与设备无关?

2 个答案:

答案 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());