Based on answers in SOF, like this
I have tried to measure the view late enough (onPreDraw
) unlike the question opener in the above question link.
I have this code:
ViewTreeObserver viewTreeObserver = myAccountView.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(
new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if (viewTreeObserver.isAlive()) {
viewTreeObserver.removeOnPreDrawListener(this);
}
int measuredWidth = myAccountView.getMeasuredWidth();
int width = myAccountView.getWidth();
return true;
}
});
}
nevertheless, measuredWidth
and width
are always 0
how can i get the view's width in pixels?
I assume you add the OnPreDrawListener somewhere in an RecyclerView.Apadter or something similar?
onPreDraw
will be called multiple times if you don't remove the listener directly. Therefore, wait until your View has a positive width and then remove the OnPreDrawListener.