【问题标题】:Overriding ImageView minHeight dynamically动态覆盖 ImageView minHeight
【发布时间】:2016-07-28 18:20:29
【问题描述】:

我有从 url 填充的 ImageView。当图像进入时,我使用“centerInside”策略对其进行缩放,这很好,我使用“adjustViewBounds”调整 ImageView 边界。

在我下载图像之前,我不知道 ImageView 的可能大小。但是,我需要显示一个合理大小的占位符。所以我在“minHeight=150dp”中加入了彩色背景。

   <ImageView
                    android:id="@+id/leadImageView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:minHeight="150dp"
                    android:background="@color/color_primary"
                    android:adjustViewBounds="true"
                    android:scaleType="centerInside" />

现在,如果下载的图像小于 150 dp,则 ImageView 仍将占用 150 dp,这是我不希望的。

所以我尝试构建一个派生的 ImageView 类,如果 drawable 已经存在,则覆盖 minHeight,如下所示:

class SomeImageView extends ImageView {
    protected int getSuggestedMinimumHeight() {
        if (getDrawable() != null)
            return 0;
        return super.getSuggestedMinimumHeight();
    }
}

我做了不同的变体,但似乎 getDrawable() 在 ImageVew 中确实存在时为空。如果不深入了解 ImageView 的内部机制,很难猜出它为什么会这样。

当 ImageView 上已设置 drawable 时,也许有人会建议另一种方法或解决方法,用 0 覆盖 minHeight。

【问题讨论】:

    标签: android imageview


    【解决方案1】:

    一旦您知道实际的图像尺寸,您应该能够在代码中以编程方式更改 minHeight 属性。 ImageView 从 View 类继承了一个方法setMinimumHeight(int)

    Android Docs - View

    【讨论】:

      猜你喜欢
      • 2014-12-10
      • 1970-01-01
      • 2014-01-15
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2018-02-05
      • 1970-01-01
      相关资源
      最近更新 更多