noties / Scrollable

Android scrollable tabs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HeaderView Issue

aamirmsw opened this issue · comments

@noties : Header view is going inside the toolbar , i need to make header view below the toolbar with size variation as on scroll up size should get reduce and on scroll down size should get increase.
review_screen

Hey @aamirmsw

As I see the scroll distance is more or less equals to the Toolbar height, so I assume that you have autoMaxScroll parameter set to true and Toolbar is the first view inside ScrollableLayout in your XML layout. Can you confirm?

See all ,Here is the both the file main activity and fragment file i have uploaded ,
i am using framelayout inside main activity and adding fragment in this framelayout which contains "ru.noties.scrollable.ScrollableLayout" as a parent layout in fragment. The 'scrollable_maxScroll' size is 100dp ,more Toolbar is not firstview inside the ScrollableLayout.

Here is a xml fragment file
fragment_rewards.txt

Here is main activity xml file

activity_main.txt

Well, I see that you have specified scrollable_maxScroll="100dp" it means that ScrollableLayout will scroll exactly 100dp. If you want to completely hide header, you must provide it's exact size via maxScroll attribute. If you not know the size of your header beforehand, you can use scrollable_autoMaxScroll="true" attribute that will automatically set scroll distance as the height of the first view

I don't want to hide complete header ,just i want to scroll half of the header and the size of view inside the header will increase and decrease accordingly scroll up/scroll down ,but here what happens , when i set scrollable_maxScroll="100dp" it scrolls half of header but header goes inside of the toolbar.

Well, the header is not going inside the toolbar, it just scrolls. If you need custom handling of a scroll state, then you have to implement your logic in Java code, for example:

scrollableLayout.addOnScrollChangedListener(new OnScrollChangedListener() {
    @Override
    public void onScrollChanged(int y, int oldY, int maxY) {

        // `ratio` of current scroll state (from 0.0 to 1.0)
        // 0.0 - means fully expanded
        // 1.0 - means fully collapsed
        final float ratio = (float) y / maxY;

        // this will scale down the header when `collapsed` (but no less than half of original height)
        headerContent.setScaleX(Math.max(.5F, ratio));
        headerContent.setScaleY(Math.max(.5F, ratio));
    }
});

Basically you can do anything with your header there