保留app widget GridView中的图像宽高比

时间:2013-01-26 23:38:59

标签: android android-appwidget android-gridview remoteview

我正在开发一个包含多个应用程序小部件的应用程序,其中一些正在使用GridView来显示其内容。内容是一堆电影封面艺术图像,我想保留图像的原始宽高比。

或者,我正在寻找一种方法来声明图像的宽高比。但是,当用户更改应用小部件的大小时,图像仍然符合GridView的宽度非常重要。

由于在处理ImageView时无法使用RemoteView的子类,因此无从谈起。我目前在ScaleType.CENTER_CROP上使用ImageView以及定义的高度和宽度,但正如您可以想象的那样,这并不完美。

有什么建议吗?

5 个答案:

答案 0 :(得分:5)

您是否在ImageView上尝试过此方法?

    imageView.setAdjustViewBounds(true);

我发现它归功于link

答案 1 :(得分:1)

尝试将GridView columnWidth设置为图像宽度,将numColumns设置为“auto_fit”,将stretchMode设置为“spacingWidth”:

<GridView
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="50dp"
        android:numColumns="auto_fit"
        android:stretchMode="spacingWidth" />

答案 2 :(得分:1)

创建远程视图的子类,其中设置位图使用类似:

https://stackoverflow.com/a/2999707/944070

在那种情况下

或覆盖onMeasure:

https://stackoverflow.com/a/4688335/944070

答案 3 :(得分:1)

ImageView与TextView略有不同。 ImageView具有“src”,用于定义窗口小部件中的前景图像。如果在imageview中设置背景,它将显示在前景后面。这两个图像的控制方式与android:stretchMode和其他android参数不同。

我建议您尝试将所有android:src更改为android:background,反之亦然,以获得您认为适合您的模式。在你想要看到它们的方式获得一些图像之后,然后使用GIMP,Photoshop操作图像,使它们与你想要的相同。图像本身需要很好,以便这些参数能够很好地适应它。图像的尺寸,密度和X-Y比率。

答案 4 :(得分:0)

在此处查看用于另一个appwidget宽高比问题的RelativeLayout + ShapeDrawable技术:How can I fill an ImageView in an Appwidget while mainiting the aspect ratio?

它适用于AppWidget约束,应该适用于此问题。