У меня есть пользовательское представление Android (наследуется от MaterialCardView).Я хочу установить max_height
динамически:
if the view wants height of x < 648dp then set the max_height to be 648dp
if the view wants height of x >= 648 then set the max_height to be 600dp
Основываясь на этом сообщении , я переопределил onMeasure
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
...
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int effectiveMaxHeight = getEffectiveMaxHeight(heightSize);
switch (heightMode) {
case MeasureSpec.AT_MOST:
heightMeasureSpec =
MeasureSpec.makeMeasureSpec(
Math.min(heightSize, effectiveMaxHeight), MeasureSpec.AT_MOST);
break;
case MeasureSpec.UNSPECIFIED:
heightMeasureSpec = MeasureSpec.makeMeasureSpec(effectiveMaxHeight, MeasureSpec.AT_MOST);
break;
case MeasureSpec.EXACTLY:
heightMeasureSpec =
MeasureSpec.makeMeasureSpec(
Math.min(heightSize, effectiveMaxHeight), MeasureSpec.EXACTLY);
break;
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private int getEffectiveMaxHeight(int heightSize) {
int extendedMaxHeight =
getContext().getResources().getDimensionPixelSize(R.dimen.popover_extended_max_height);
return (heightSize >= extendedMaxHeight)
? getContext().getResources().getDimensionPixelSize(R.dimen.popover_max_height)
: extendedMaxHeight;
}
Но, когда я отлаживаюЯ всегда вижу высоту 572dp с включенным представлением прокрутки.Неважно, как долго контент.
Я проверил, и представление прокрутки не имеет fixed height
или max_height
.
Что еще я должен проверить дважды?