在应用程序小部件的网格视图中保持图像纵横比

3
我正在开发一个应用程序,其中包含几个应用小部件,其中一些使用 GridView 来显示其内容。这些内容是一堆电影封面图片,我希望保留图像的原始纵横比。

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

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

有什么建议吗?


1
嗨,这里是我编写的一个函数,用于将图像缩放以适应屏幕宽度,但也具有正确的高度。它包括对原始文章进行计算的引用。它可能会为您的问题提供一些灵感。http://pastebin.com/suM5RSMz - jim
抱歉,但那并没有真正帮到您。在代码中很容易缩放所有内容,但我认为在处理 RemoteViews 时这是不可能的。 - Michell Bak
哦,好的,对不起。 - jim
有时候很有用的conor。谢谢。 - Siddharth
5个回答

5
你有没有在你的ImageView上尝试过这种方法?
    imageView.setAdjustViewBounds(true);

我通过这个链接找到了它。

是的,似乎没有改变任何东西。 - Michell Bak

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" />

抱歉,这并不是我正在寻找的内容。此外,您真的应该包括GridView项(ImageView)的XML。 - Michell Bak

1

1
处理 RemoteViews 时无法使用子类。我甚至在问题中写了这个。 - Michell Bak

1
一个ImageView和TextView有点不同。ImageView具有“src”,它定义了小部件中的前景图像。如果在imageview中设置背景,则它会显示在前景后面。这两个图像使用android:stretchMode和其他android参数进行不同的控制。
我建议您尝试将所有的android:src更改为android:background,反之亦然,以获得适合您的模式。当您已经得到了几张想要看到的图片时,可以使用GIMP、Photoshop等工具来调整图片大小,使其与您喜欢的图片大小相同。图片本身需要很好,这样这些参数才能很好地与其配合使用。大小、密度和图像的X-Y比例都很重要。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接