Skip to content

@dsukmanova Сукманова Дарья - #22

Open
dmikheeva wants to merge 2 commits into
yamblz-native:masterfrom
dmikheeva:master
Open

@dsukmanova Сукманова Дарья#22
dmikheeva wants to merge 2 commits into
yamblz-native:masterfrom
dmikheeva:master

Conversation

@dmikheeva

Copy link
Copy Markdown

screen_snapshot

Примечание: хотела не делать measureChild для view с параметром match-parent в цикле, а сделать отдельно после:
matchParentElement.measure(mpWidthSpec, heightMeasureSpec);

В таком случае получала, что этот элемент растягивался на всю высоту. Не смогла понять, почему так происходит, можете пожалуйста пояснить?

@bracadabra

Copy link
Copy Markdown
Collaborator

А можешь скинуть код с которым не получилось и вьюха по высоте растягивалась?

int mpHeightSpec = MeasureSpec.makeMeasureSpec(matchParentElement.getMeasuredHeight(), MeasureSpec.EXACTLY);
matchParentElement.measure(mpWidthSpec, mpHeightSpec);
}
setMeasuredDimension(width, height);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По хорошему, мы должны считать высоту и ширину, основываясь на потомках, так как width или height здесь могут быть равны 0

@dmikheeva

Copy link
Copy Markdown
Author

@Drnkn
про растягивание вьюхи по высоте:
просто строчку 38 перенести в этот if:
if (layoutParams.width != LayoutParams.MATCH_PARENT)

@bracadabra

bracadabra commented Aug 10, 2016

Copy link
Copy Markdown
Collaborator

@dsukmanova
Получилось вот так:

            LayoutParams layoutParams = childView.getLayoutParams();

            if (layoutParams.width != LayoutParams.MATCH_PARENT) {
                measureChild(childView, widthMeasureSpec, heightMeasureSpec);
                elementsWidth += childView.getMeasuredWidth();
            } else {
                matchParentElement = childView;
            }

Но видимо это как-то не так должно работать, потому что тогда вью с match_parent не отображается, похоже, что из за этой строчки matchParentElement.getMeasuredHeight(), так как getMeasuredHeight равно 0, вью же не была еще измерена. А вообще, мне кажется, что вью растягивалась на всю высоту, потому что ты передавала ей родительские measureSpec, поэтому родные параметры игнорировались.

if (matchParentElement != null) {
int mpWidthSpec = MeasureSpec.makeMeasureSpec(Math.max(0, width - elementsWidth), MeasureSpec.EXACTLY);
int mpHeightSpec = MeasureSpec.makeMeasureSpec(matchParentElement.getMeasuredHeight(), MeasureSpec.EXACTLY);
matchParentElement.measure(mpWidthSpec, mpHeightSpec);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь может быть проблема в том, что при измерении через View.measure не учитываются отступы, поэтому вьюха может обрезаться, в measureChild отступы учитываются "волшебным" образом

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants