2016-07-28 9 views
0

私は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でオーバーライドする別の方法や回避策を提案するかもしれません。

答えて

1

実際のイメージの大きさを知ったら、コード内でプログラムによってminHeight属性を変更することができます。 ImageViewは、ViewクラスからメソッドsetMinimumHeight(int)を継承します。

Android Docs - View

関連する問題