我的布局中有一个操作栏,文本视图和一个imageview。 Imageview有widht和height match_parent。 Imageview占用视图中剩余的剩余空间。我想为视图设置一个位图,但这太大了。所以我首先要获取imageview的宽度和高度,然后使用它们缩小位图,然后将其设置为imageview。我已经尝试在OnCreate中获取imageview的宽度和高度,但这可能是0,0可能是因为还没有创建imageview。
请建议怎么做?
感谢。
答案 0 :(得分:1)
你需要使用ViewTreeObserver
onPreDrawListener,这是在测量完所有内容之后调用的,并且在它被绘制之前被调用
ImageView iv = (ImageView)findViewBYId(R.id.imageview);
ViewTreeObserver observer = iv.getViewTreeObserver()
observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw(){
observer.removeOnPreDrawListener(this);
//do your stuff here
}
}
答案 1 :(得分:0)
如果您只对特定ImageView的布局更改感兴趣,那么就可以采用布局监听器:
imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
// do stuff
}
});
答案 2 :(得分:-1)
您是否尝试过此链接?
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap
基本上存在这样一种方法,特别是用于防止因大位图而导致的内存问题。您首先阅读尺寸,然后填写缩放样本。