Skip to content
This repository has been archived by the owner on Jul 22, 2019. It is now read-only.

ViewPager inside adapter #68

Open
panekzogen opened this issue Feb 9, 2019 · 2 comments
Open

ViewPager inside adapter #68

panekzogen opened this issue Feb 9, 2019 · 2 comments

Comments

@panekzogen
Copy link

Hello.

I don't have a strong knowledge about view processing in android but maybe this helps someone because library seems unsupported.
If someone want to create complex layout, in my case it was ViewPager inside adapter of swipe stack,
note that the layout processing doing in wrong order:
At SwipeStack.addNewView() which called on onLayout() for children nodes performing following:

bottomView.measure(measureSpecWidth | width, measureSpecHeight | height);
addViewInLayout(bottomView, 0, params, true);

But after several hours of reviewing android code and googling i found that right order is:

addView(bottomView, 0, params);
bottomView.measure(measureSpecWidth | width, measureSpecHeight | height);
bottomView.layout(0, 0, width, height);

If someone has deep knowledge about it and know on what exactly it affects, please explain.
Hope that it helps someone.

@panekzogen
Copy link
Author

Second issue which i found:
onMeasure override is not correct without measuring children

For measure all components onMeasure method should be overridden as follow

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        setMeasuredDimension(width, height);

        int count = getChildCount();
        for (int i = 0; i < count; i++) {
            final View child = getChildAt(i);
            measureChild(child, widthMeasureSpec, heightMeasureSpec);
        }
    }

@Johnett
Copy link

Johnett commented Jul 10, 2019

Thank you for taking the time to post these fixes. It'll definitely help someone.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants