在水平滚动视图中正确缩放绘图?

问题描述:

我有一个Horizo​​ntalScrollView,其中包含用户设备上安装的应用程序的图标。代码如下:在水平滚动视图中正确缩放绘图?

for(int i=0; i<installedApps.size();i++){ 
     ImageView appIcon = new ImageView(this); 
     Drawable drawableAppIcon = mPackageManager.getApplicationIcon(installedApps.get(i).applicationInfo); 
     //drawableAppIcon.setBounds(0, 0, 55, 55); 
     appIcon.setImageDrawable(drawableAppIcon); 
     //appIcon.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     listLayout.addView(appIcon); 
    } 

installedApps是设备上的所有安装的应用程序的PackageInfo的ArrayList。将.xml如下:

<HorizontalScrollView 
     android:id="@+id/scrollViewArcade" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    <LinearLayout 
      android:id="@+id/listApps" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
    </LinearLayout> 
</HorizontalScrollView> 

这样做的问题是,当运行该应用程序时,应用程序的各种最终具有各种大小的图标具有不同的密度。我并不特别关心密度或分辨率,因为我的情况下所有图标都需要缩小到无法区分的区域。但是,我很难弄清楚如何使所有图标的大小相同。第一行我评论了drawable...我认为会做的伎俩,第二条评论线为我工作,当我在gridview中做了类似的事情,但在这种情况下,两者都没有这样做?

我也尝试将LinearLayout的layout_height设置为50dp,但这只会导致图标被切断,因为它们对于布局来说太大了。那么我怎样才能缩小这些图标呢?

编辑:好不容易才弄明白,我应该已经编辑ImageView的,而不是绘制的参数,所以下面的工作:

LayoutParams layoutParams = new LayoutParams(55, 55); 
appIcon.setLayoutParams(layoutParams); 
+0

检查drawableAppIcon.getIntrinsicWidth()和getIntrinsicHeight的() – pskink

设置大小为0 0 55 55了,但调用appIcon.setScaleType(ScaleType.CENTER_INSIDE);

检查出一些文档setScaleTypeScaleType

+0

试了一下,相同的一般错误,我想,也许我应该对ImageView的,而不是绘制对象被设定界限? – mike

+0

是的,我以为你是在设置ImageView的边界,因为我只是在源代码上剔除。 – npace