动态覆盖ImageView minHeight
问题描述:
我有从URL填充的ImageView。当图像进入时,我使用“centerInside”策略对其进行缩放,这很好,我使用“adjustViewBounds”将ImageView绑定到它。动态覆盖ImageView minHeight
在我下载图像之前,我不知道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类,覆盖了minHeight如果绘制的是已经存在,就像这样:
class SomeImageView extends ImageView {
protected int getSuggestedMinimumHeight() {
if (getDrawable() != null)
return 0;
return super.getSuggestedMinimumHeight();
}
}
我做到了,在不同的变化,但似乎getDrawable()是在ImageVew中确实存在时为null。没有潜入ImageView的内部机制,很难猜测它为什么如此。
也许有人会建议另一种方法或解决方法,以便在ImageView上设置drawable时将minHeight替换为0。
答
一旦您知道实际的图像尺寸,您应该能够在代码中以编程方式更改minHeight属性。 ImageView继承View类的方法setMinimumHeight(int)
。