Просмотр Android getWidth() возвращает 0 даже в onPreDraw()
На основе ответов в SOF, вот так
Я попытался измерить вид достаточно поздно (onPreDraw
) в отличие от открывающего вопрос в приведенной выше ссылке на вопрос.
У меня есть этот код:
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;
}
});
}
тем не менее, measuredWidth
а также width
всегда 0
Как я могу получить ширину вида в пикселях?
0 ответов
Я предполагаю, что вы добавляете OnPreDrawListener где-нибудь в RecyclerView.Apadter или что-то подобное?
onPreDraw
будет вызываться несколько раз, если вы не удалите слушателя напрямую. Поэтому подождите, пока у вашего представления будет положительная ширина, а затем удалите OnPreDrawListener.
@Override
public boolean onPreDraw() {
// imageView might not be drawn yet..
if (myAccountView.getWidth() < 1) {
return true;
} else {
viewTreeObserver.removeOnPreDrawListener(this);
//..you can do all your calculation here
//..and afterwards return
return true
}
}