如何将ImageView设置为wrap_content时获得高度

时间:2017-05-12 05:35:09

标签: android android-layout imageview android-imageview

所以交易是我动态地将图像设置为imageview并且我已将imageview高度设置为包含内容,因此如何在从服务器设置图像后获得imageview布局的高度我尝试了此代码但是它给出了drawable的高度,

imageView.getDrawable().getIntrinsicHeight();

我也试过这个但是高度为零。

ViewTreeObserver vto = imageView.getViewTreeObserver();

实际上有第二种布局取决于imageview的高度,我的意思是我想通过将75%的imageview高度设置为第二个布局作为marginTop来覆盖imageview上的第二个布局, Something like this image 请提前帮助谢谢

1 个答案:

答案 0 :(得分:0)

这可能是问题所在。

您在ImageView上调用getWidth()getHeight()的位置?如果您在活动中致电onCreate(),则无法正常工作。您需要等待附加的活动窗口,然后在ImageView上调用getWidth()getHeight()。您可以尝试从活动的getWidth()方法中调用getHeight()onWindowFocusChanged()

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

或在ViewTreeObserver onWindowsFocusChanged中使用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()

在您的活动imageView.post(new Runnable() { @Override public void run() { int width = iv.getMeasuredWidth(); int height = iv.getMeasuredHeight(); } }); 中试试这个并告诉我

Num_Msg= [array([-24,   5]), array([12, 12]), array([ 15, -64]), array([-9, 15]), array([18, 12]), array([  4, -64])]

希望这有帮助