0

したがって、リストビュー内にimageViewがあり(ローダーによってロードされます)、幅はmatch_parentに設定されています。imageviewビットマップを設定する場合は、imageViewの高さと幅を使用して最適なサイズのビットマップをロードします。問題は、imageViewのサイズがローダーの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 に答える