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

时间:2013-07-24 15:11:36

标签: android icons horizontalscrollview

我有一个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的参数,而不是drawable,所以以下工作:

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

1 个答案:

答案 0 :(得分:0)

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

查看setScaleTypeScaleType

的部分文档