我从资源加载图像,并在滚动视图中显示它们,分别在水平和垂直视图中显示。但图像大小不相等。它们看起来不同而且很笨拙,如图的左侧所示。我希望他们都有相同的尺寸。我怎么得到这个?这是我的代码:
XML:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollViewlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="100dp"
android:layout_height="67dp"
android:orientation="vertical"
android:id="@+id/imagesView" >
</LinearLayout>
</ScrollView>
</LinearLayout>
爪哇:
if(((LinearLayout) scrollV).getChildCount() > 0){
((LinearLayout) scrollV).removeAllViews();
}
for(int j=0;j<images[(Integer) v.getTag()].length;j++){
try {
Bitmap bm = getBitmapFromAsset(images[(Integer) v.getTag()][j]);
ImageView image = new ImageView(PhotoView.this);
image.setImageBitmap(bm);
LinearLayout.LayoutParams layoutParams = new
LinearLayout.LayoutParams(133, 89);
if(j==0){
layoutParams.setMargins(0, 2, 0, 2);
}
else{
layoutParams.setMargins(0,0 ,0 , 2);
}
image.setLayoutParams(layoutParams);
scrollV.addView(image);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Bitmap getBitmapFromAsset(String strName) throws IOException
{
AssetManager assetManager =getAssets();
InputStream istr = assetManager.open(strName);
Bitmap bitmap = BitmapFactory.decodeStream(istr);
return bitmap;
}
答案 0 :(得分:2)
试
image.setScaleType(ImageView.ScaleType.FIT_XY);
最终
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
问题是在第一种情况下,不会保持纵横比。 在第二种情况下,可以裁剪一些图像。
但它们应该具有相同的大小
答案 1 :(得分:1)
您可以使用以下方式设置图像比例:
image.setScaleType(ImageView.ScaleType.FIT_XY)
但是,我建议不要首先使用不同大小的图像资源,如果最终你想要统一显示它们。使用上面的缩放代码会使一些图像看起来扭曲。最好的方法是,耐心地为hdmi,xdpi,ldpi和mdpi屏幕类型设计资源,并在每个屏幕类型的自己的文件夹中存储资源。此外,使用Android SDK附带的9-patch工具在使用之前预先扩展资源。这减少了资源的内存影响,当缩放不同的屏幕尺寸时,它们不会被扭曲。
我知道完成所有资源设计工作需要时间,但是为不同屏幕提供的媒体质量值得付出努力。