私はImageViewをURLから取り込んでいます。画像が入ったら、 "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" />
は今、これはImageViewのDPダウンロードした画像は以下のようになり場合よりも小さい150は、まだ私は望んでいないことを、150DP型占めるという結果があります。私はさまざまなバリエーションでそれをやった
class SomeImageView extends ImageView {
protected int getSuggestedMinimumHeight() {
if (getDrawable() != null)
return 0;
return super.getSuggestedMinimumHeight();
}
}
が、それはgetDrawableは()であることを思わ:
それでは、私が試してみましたが描画可能で、このように、既に存在している場合minHeightのをオーバーライドする派生ImageViewのクラスを構築することです実際にImageVewの中にあるときはnullです。 ImageViewの内部機構に没頭することなく、それがなぜそうであるかを推測することは困難です。
誰かが、ImageViewにdrawableが既に設定されている場合、minHeightを0でオーバーライドする別の方法や回避策を提案するかもしれません。