2017-05-12 5 views
-1

私はイメージをイメージビューに動的に設定していますが、イメージビューの高さをラップコンテンツとして設定しています。このコードが、その与えドロウアブルの高さ、イメージビューの高さをwrap_contentに設定するとどうなるのですか

imageView.getDrawable().getIntrinsicHeight(); 

と私はまた、これと試みたが、ゼロとして高さを得ていました。

ViewTreeObserver vto = imageView.getViewTreeObserver(); 

が実際にImageViewのの高さに依存する第二のレイアウトがあり、私は Something like this image 、私はmarginTopとして第二レイアウトにImageViewの高さの75%を設定することで、ImageViewの上の第二のレイアウトをオーバーレイしたいわけで感謝を助けてくださいadvance

答えて

0

これは問題の可能性があります。

ImageViewでgetWidth()とを電話したのはどこですか?活動中のonCreate()から電話すると、動作しません。アクティビティウィンドウが添付されるのを待ってからImageViewでgetWidth()getHeight()と電話する必要があります。とgetHeight()onWindowFocusChanged()から呼び出すことができます。

@Override 
public void onWindowFocusChanged(boolean hasFocus){ 
    int width=imageView.getWidth(); 
    int height=imageView.getHeight(); 
} 

またはそれが

int finalHeight, finalWidth; 

final ImageView iv = (ImageView)findViewById(R.id.scaled_image); 
final TextView tv = (TextView)findViewById(R.id.size_label); 
ViewTreeObserver vto = iv.getViewTreeObserver(); 
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
    public boolean onPreDraw() { 
     iv.getViewTreeObserver().removeOnPreDrawListener(this); 
     finalHeight = iv.getMeasuredHeight(); 
     finalWidth = iv.getMeasuredWidth(); 
     tv.setText("Height: " + finalHeight + " Width: " + finalWidth); 
     return true; 
    } 
}); 

があなたの支援のonCreate()で、このいずれかを試してみて、これは私が持っているそう

+0

を助け、私は

imageView.post(new Runnable() { @Override public void run() { int width = iv.getMeasuredWidth(); int height = iv.getMeasuredHeight(); } }); 

希望をお知らせください動作しますonWindowsFocusChangedViewTreeObserverを使用それを試してみた –

+0

あなたはこれをどこで使っているのですか?コード? inCreate()で?? –

+0

はいonCreateで使用しています –