Есть ли способ получить высоту всего ScrollView?

Есть ли способ в Android, чтобы получить высоту всего "ScrollView"?

Я попытался "layout.getMeasuredHeight()", но он дает высоту только видимой области.

2 ответа

Решение

Вы хотите высоту дочернего элемента ScrollView. Пытаться scrollView.getChildAt(0).getMeasuredHeight(),

РЕДАКТИРОВАТЬ

Возможно, вы могли бы попытаться использовать саму меру View и задать ей показатель мер, который позволит ей использовать столько места, сколько он хочет. Что-то вроде этого:

int width = ... // get screen width;
int height = 65536; // arbitrarily large value
final int widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST);
final int heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST);
view.onMeasure(widthMeasureSpec, heightMeasureSpec);
// now get the height
int measuredHeight = view.getMeasuredHeight();

Полное раскрытие: я не знаю, будет ли это работать или как это может повлиять на ваше приложение. Есть побочный эффект вызова этого метода, который состоит в том, что измеренные размеры представления установлены. Если это возможно, вы можете попытаться создать отдельное дублированное представление и измерить его; или, после того как вы сделаете этот замер, позвоните requestLayout() в представлении, чтобы запланировать другое измерение и расположение дерева представления.

ScrollView всегда имеет только одного дочернего элемента, поэтому с помощью:

ScrollView.getChildAt(0).getHeight();

должно сработать.

Другие вопросы по тегам