动态覆盖ImageView minHeight

时间:2016-07-28 10:13:41

标签: android imageview

我有从网址填充的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仍然会占用150dp,这是我不想要的。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

一旦您知道实际图像尺寸,就应该能够在代码中以编程方式更改minHeight属性。 ImageView从View类继承了一个方法<?php $val = "hello world ansprüche theme park hello"; $ne = "ansprüche"; echo substr_count(strtolower(utf8_decode($val)), utf8_decode($ne)); ?>

Android Docs - View