2012-09-02 60 views
1

我正在动态创建线性布局并为其添加一些图像视图和文字查看。在动态线性布局中设置Imageview的大小

代码

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); 
} 

上运行的应用

第一设备:该imageviews是适当的尺寸。

第二个设备:图片视图太小。

有没有什么办法,我可以通过设置imageview的明确大小来避开它,以便它变得独立于设备?

回答

1

建议使用dp而不是px。

有关DP VS PX的更多信息,你可以访问Support multiple screens

在你的情况,你设置的像素值。如果你想与DP工作,你可以使用以下命令:

float x = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics()); 
+0

请你详细说明一下,这怎么适用于我的情况呢? –

+1

你现在的'100'是像素的,你应该用它提供的方法把它改成dp。 – Aprian

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); 
}