レイアウト完了リスナーの追加に注意を払い、レイアウトプロセスが完了したときにinto(imageView)を呼び出す簡単なヘルパーを作成しました。
public class PicassoDelegate {
private RequestCreator mRequestCreator;
public PicassoDelegate(ImageView target, RequestCreator requestCreator) {
if (target.getWidth() > 0 && target.getHeight() > 0) {
complete(target, requestCreator);
} else {
mRequestCreator = requestCreator;
target.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
v.removeOnLayoutChangeListener(this);
complete((ImageView) v, mRequestCreator);
}
});
}
}
private void complete(ImageView target, RequestCreator requestCreator) {
if (target.getWidth() > 0 && target.getHeight() > 0) {
requestCreator.resize(target.getWidth(), target.getHeight());
}
requestCreator.into(target);
}
}
したがって、たとえばフラグメントのonViewCreated()で、このように簡単に使用できます。
new PicassoDelegate(customerPhoto, Picasso.with(getActivity()).load(user.getPhotoUrl()).centerCrop())
java.lang.IllegalArgumentException: At least one dimension has to be positive number.
は、ローテーションでエラーが発生します。これはフラグメントに含まれています。なぜこれが発生するのかについてのアイデアはありますか?