0

所以我在 listview 中有一个 imageView(由 Loader 加载),宽度设置为 match_parent。当我想设置 imageview 位图时,我使用 imageView 的高度和宽度来加载最佳大小的位图。问题是 ImageView 大小有时在 Loader bindView 中是未知的(尚未测量?)。在这种情况下,我怎么能每次都获得位图的宽度?

@Override
    public void bindView(View view, final Context context, Cursor cursor) {
        ImageView iv = (ImageView) (ImageView) view.findViewById(R.id.image);
        ....
        bitmap = BitmapHelper.decodeSampledBitmapFromFile( new File(file), iv.getWidth(), iv.getHeight());
        imageView.setImageBitmap(bitmap);
    }
4

1 回答 1

1

您必须等到视图初始化,然后才能获取尺寸。尝试像这样使用 ViewObserver:

ViewTreeObserver viewTreeObserver = YOURLAYOUT.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
   viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
          public void onGlobalLayout() {
             YOURLAYOUT.getViewTreeObserver().removeGlobalOnLayoutListener(this);
             //do some things
             //YOURLAYOUT.getWidth() should give a correct answer
          }
   });
}

希望有帮助:)

于 2012-12-20T18:53:50.930 回答