我正在尝试获取我的imageview的高度和宽度,以便我可以按照适当的大小缩放我的图像,但每当我尝试获得高度时,我得到的高度为0.我想也许它还没有被测量所以我在imageview上放了一个onPreDrawListener
,以便我知道它会在那时被测量但是我仍然得到0所以我不确定这个问题。
这是我的完整布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:id="@+id/content"
android:layout_above="@+id/comment_layout">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"/>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/comments"
android:background="@android:color/transparent"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/comment_layout">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/send_button"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/send_button"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"/>
</RelativeLayout>
</RelativeLayout>
这是我试图获得高度的地方
ViewTreeObserver obs = imageView.getViewTreeObserver();
if(obs != null){
obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if(image != null){
imageView.getViewTreeObserver().removeOnPreDrawListener(this);
int height = imageView.getHeight(); // 0
int width = imageView.getWidth(); // 720
}
return false;
}
});
}
宽度显示720但高度始终显示为0.
放入硬宽度也没有效果
答案 0 :(得分:1)
这应该与OnGlobalLayoutListener
一样适用
final ImageView image = new ImageView(this);
image.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
int height = image.getHeight();
}
});
当全局布局状态或可见性更改
时,将调用此回调