所以交易是我动态地将图像设置为imageview并且我已将imageview高度设置为包含内容,因此如何在从服务器设置图像后获得imageview布局的高度我尝试了此代码但是它给出了drawable的高度,
imageView.getDrawable().getIntrinsicHeight();
我也试过这个但是高度为零。
ViewTreeObserver vto = imageView.getViewTreeObserver();
实际上有第二种布局取决于imageview的高度,我的意思是我想通过将75%的imageview高度设置为第二个布局作为marginTop来覆盖imageview上的第二个布局, 请提前帮助谢谢
答案 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])]
希望这有帮助