Git Product home page Git Product logo

viewpagerbottomsheet's Introduction

ViewPagerBottomSheet

Use ViewPagers in Bottom Sheets and Bottom Sheet Dialogs!

Example

This repository features an example app that demonstrates nested ViewPagers inside a bottom sheet:

Example App

Use for your project

Add the maven repo url to your build.gradle:

repositories {
    maven { url "https://raw.github.com/laenger/maven-releases/master/releases" }
}

Add the library to the dependencies:

dependencies {
    compile "biz.laenger.android:vpbs:0.0.6"
}

Use ViewPagerBottomSheetBehavior for your bottom sheet view:

app:layout_behavior="@string/view_pager_bottom_sheet_behavior"

Setup any nested ViewPager inside the bottom sheet:

BottomSheetUtils.setupViewPager(bottomSheetViewPager)

(This also works when the ViewPager is the bottom sheet view and for further nested ViewPagers)

Use with Bottom Sheet Dialogs

Use ViewPagerBottomSheetDialogFragment as super-class and setup any ViewPager as follows:

public class DialogFragment extends ViewPagerBottomSheetDialogFragment {
    @Override
    public void setupDialog(Dialog dialog, int style) {
        super.setupDialog(dialog, style);
        final View contentView = View.inflate(getContext(), R.layout.dialog_bottom_sheet, null);

        ViewPager viewPager = (ViewPager) contentView.findViewById(R.id.viewpager);
        // ...
        BottomSheetUtils.setupViewPager(viewPager);

        dialog.setContentView(contentView);
    }
}

Example App

How does this work?

ViewPagerBottomSheetBehavior is essentially identical to the original BottomSheetBehavior from the Design Support Library but adds important details: ViewPagers are now properly handled when finding the scrolling child, and this reference can be updated on ViewPager page changes. See the key diff in this commit: 2775715

viewpagerbottomsheet's People

Contributors

crehmann avatar kozmi55 avatar laenger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

viewpagerbottomsheet's Issues

How to get mBottomSheetCallback methods to my fragment/activity ?

I am using swipe to refresh view inside bottomsheet viewpager, when I long swipe the view swipe to refresh
it refresh icon get stuck down as the parent bottom sheet is started moving down, if I know the status of the bottom sheet I clear the swipe to refresh view.

Null Pointer Exception

Hello,I am getting NPE when changing the device font to Gothic Bold or device language to Gujrati with maximum font size applied.
Device : Samsung Galaxy On8
OS Version : Lollipop

Please help me out in fixing this.
After debugging I got to know the view is becoming null in this line
"View scrollingChild = this.findScrollingChild((View)this.mViewRef.get());" which is in ViewPagerBottomSheetBehaviour class. How to null check the view here?

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.ref.WeakReference.get()' on a null object reference
at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.invalidateScrollingChild(ViewPagerBottomSheetBehavior.java:433)
at biz.laenger.android.vpbs.BottomSheetUtils$BottomSheetViewPagerListener$1.run(BottomSheetUtils.java:32)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7402)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

WeakReference.get() on a null object reference

I am having this problem many times

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.ref.WeakReference.get()' on a null object reference
	biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.onInterceptTouchEvent (ViewPagerBottomSheetBehavior.java:289)
	android.support.design.widget.CoordinatorLayout.performIntercept (CoordinatorLayout.java:460)
	android.support.design.widget.CoordinatorLayout.onInterceptTouchEvent (CoordinatorLayout.java:499)
	android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2310)
	android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2709)
	android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2371)
	android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2709)
	android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2371)
	android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2709)
	android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2371)
	android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2709)
	android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2371)
	android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2709)
	android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2371)
	android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2709)
	android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2371)
	com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent (PhoneWindow.java:2568)
	com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1776)
	android.app.Activity.dispatchTouchEvent (Activity.java:2866)
	android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:71)
	android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:71)
	com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent (PhoneWindow.java:2529)
	android.view.View.dispatchPointerEvent (View.java:9186)
	android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:4706)
	android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:4544)
	android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4068)
	android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:4121)
	android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:4087)
	android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:4201)
	android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:4095)
	android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:4258)
	android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4068)
	android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:4121)
	android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:4087)
	android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:4095)
	android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4068)
	android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:6564)
	android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:6454)
	android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:6425)
	android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:6654)
	android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:185)
	android.os.MessageQueue.nativePollOnce (MessageQueue.java)
	android.os.MessageQueue.next (MessageQueue.java:143)
	android.os.Looper.loop (Looper.java:130)
	android.app.ActivityThread.main (ActivityThread.java:5951)
	java.lang.reflect.Method.invoke (Method.java)
	java.lang.reflect.Method.invoke (Method.java:372)
	com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1388)
	com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1183)

migrate to androidx

Thank you for the library, it saves my time!
Can you migrate the library to androidx (or create another repo, like ViewPagerBottomSheetX)?
Thanks

Nested scrolling doesn't work

I'm trying to get this library working with a ViewPager inside a LinearLayout with BottomSheetBehavior, which contains fragments with a NestedScrollView inside a RelativeLayout. Layouts are below. Everything works as expected, apart from the actual nested scrolling. Is there something that I'm missing? At first I thought the additional OnPageChangedListener was the issue, but even after removing it, it still didn't work.

layout/activity_main.xml

<android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <LinearLayout
            android:id="@+id/activity_bottom_sheet_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:background="@color/color_white"
            android:elevation="@dimen/design_appbar_elevation"
            app:behavior_peekHeight="@dimen/height_bottom_sheet"
            app:layout_behavior="@string/view_pager_bottom_sheet_behavior">

        <android.support.v7.widget.RecyclerView
                android:id="@+id/activity_bottom_sheet_recyclerview"
                android:layout_width="match_parent"
                android:layout_height="@dimen/height_bottom_sheet"
                android:clipToPadding="false"
                android:orientation="horizontal"
                android:background="@color/color_primary"
                app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>

        <android.support.v4.view.ViewPager
                android:id="@+id/activity_bottom_sheet_viewpager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>

layout/fragment_nested.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/color_white">

    <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical">
    </android.support.v4.widget.NestedScrollView>
</RelativeLayout>

java/MainActivity.java

 @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      mViewPager = (ViewPager) findViewById(R.id.activity_bottom_sheet_viewpager);         mViewPager.addOnPageChangeListener(mOnViewPagerPageChangeListener);
       BottomSheetUtils.setupViewPager(mViewPager);
}

Get BottomSheetBehavior callback

Hi,
First thanks for the excellent library, can you please let me know how to get callbacks for page events like onSlide and page events like STATE_EXPANDED, STATE_COLLAPSED, STATE_DRAGGING, STATE_SETTLING, STATE_HIDDEN ?

Strange behaviour

Thanks a lot for this library!
But there is a little problem. When i try to swipe ViewPager's fragment, it often close bottom sheet;
To change fragment of viewpager i should move finger right on x axis without any y movements.
Is there any workaround to intercept this action to fix this strange behavior?

How to display bottom sheet below main toolbar?

How to display bottom sheet below main toolbar?

Hi i want to display bottom sheet view below my main toolbar. how can i fix this on because of i want to display my toolbar with back arrow

java.lang.NullPointerException

Attempt to invoke virtual method 'java.lang.Object java.lang.ref.WeakReference.get()' on a null object reference
biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.invalidateScrollingChild(ViewPagerBottomSheetBehavior.java:433)
final View scrollingChild = findScrollingChild(mViewRef.get());
mViewRef is null;

can not use vpbs in project with androidx

hello
i have a project with androidx
and i add vpbs module in my project
but in class ViewPagerUtils
layoutParams.position (position is private in viewpager in androidx)
so i have an error and can not use vbps
now how i should do?
thanks

Build failing on `gradlew install`

First of all, amazing work. Saved me a lot of work.
I am building a library(it uses this library internally) and I am planning to upload it to jCenter. But as your library is only in Maven, people who want to use my library will also have to include your Maven dependency. So it would be really helpful if you can publish your library in jCenter via bintray.

I tried adding required classes from your library to mine but ran into compile issues on gradlew install. If you would help solve it, it would be great. Mostly the issues are Annotation related.

java.lang.NullPointerException: at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.onInterceptTouchEvent

java.lang.NullPointerException:
at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.onInterceptTouchEvent (ViewPagerBottomSheetBehavior.java:301)
at android.support.design.widget.CoordinatorLayout.performIntercept (CoordinatorLayout.java:473)
at android.support.design.widget.CoordinatorLayout.onInterceptTouchEvent (CoordinatorLayout.java:510)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2696)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3159)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3159)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3159)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3159)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2844)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3159)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2844)
at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:601)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1871)
at android.app.Activity.dispatchTouchEvent (Activity.java:3384)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:563)
at android.view.View.dispatchPointerEvent (View.java:12791)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:5675)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:5470)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4963)
at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5016)
at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:4982)
at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:5119)
at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:4990)
at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:5176)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4963)
at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5016)
at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:4982)
at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:4990)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4963)
at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:7742)
at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:7682)
at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:7643)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:7853)
at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:197)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents (Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents (InputEventReceiver.java:186)
at android.view.ViewRootImpl.doConsumeBatchedInput (ViewRootImpl.java:7816)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run (ViewRootImpl.java:7880)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:911)
at android.view.Choreographer.doCallbacks (Choreographer.java:723)
at android.view.Choreographer.doFrame (Choreographer.java:652)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:897)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6942)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

Set Height

How can I set height? I do not want this to take up whole page size.

NullPointerException

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.ref.Reference.get()' on a null object reference
       at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.invalidateScrollingChild(ViewPagerBottomSheetBehavior.java:432)
       at biz.laenger.android.vpbs.BottomSheetUtils$BottomSheetViewPagerListener$1.run(BottomSheetUtils.java:35)
       at android.os.Handler.handleCallback(Handler.java:789)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:169)
       at android.app.ActivityThread.main(ActivityThread.java:6595)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Could not get unknown property

Error:(7, 0) Could not get unknown property 'compileSdkVersion' for root project 'BottomSheetApp' of type org.gradle.api.Project.
Open File

Error:(30, 0) Could not get unknown property 'butterknifeVersion' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Open File

NullPointerException

i just integrated the library and i got this Error on launching the app

FATAL EXCEPTION: main Process: com.wadeeny.ondemand, PID: 20144 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.View.isNestedScrollingEnabled()' on a null object reference at android.support.v4.view.ViewCompat$ViewCompatApi21Impl.isNestedScrollingEnabled(ViewCompat.java:1320) at android.support.v4.view.ViewCompat.isNestedScrollingEnabled(ViewCompat.java:3308) at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.findScrollingChild(ViewPagerBottomSheetBehavior.java:609) at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.findScrollingChild(ViewPagerBottomSheetBehavior.java:615) at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.findScrollingChild(ViewPagerBottomSheetBehavior.java:622) at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.onLayoutChild(ViewPagerBottomSheetBehavior.java:252) at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:894) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1171) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) at android.widget.LinearLayout.onLayout(LinearLayout.java:1544) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) at android.widget.LinearLayout.onLayout(LinearLayout.java:1544) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at com.android.internal.policy.DecorView.onLayout(DecorView.java:758) at android.view.View.layout(View.java:19590) at android.view.ViewGroup.layout(ViewGroup.java:6053) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2488) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2204) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1390) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6754) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966) at android.view.Choreographer.doCallbacks(Choreographer.java:778) at android.view.Choreographer.doFrame(Choreographer.java:713) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:172) at android.app.ActivityThread.main(ActivityThread.java:6637) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Issue in ViewPagerUtils

` final int currentItem = viewPager.getCurrentItem();

    for (int i = 0; i < viewPager.getChildCount(); i++) {
        final View child = viewPager.getChildAt(i);
        final ViewPager.LayoutParams layoutParams = (ViewPager.LayoutParams) child.getLayoutParams();
        if (!layoutParams.isDecor && currentItem == layoutParams.position) {
            return child;
        }
    }
    return null;`

layoutParams.position is a private field couldn't use this. Can you help

Does not handle multiple scrollable children

The scroll events are not dispatched when there are adjacent children that can scroll, like scenario below.

<LinearLayout
     ...
     layout_behavior="bottom_sheet" >

   <RecyclerView/>
   <NestedScrollView/>
   <ViewPager />

</LinearLayout>

crash app after update support library:design to 27.0.2

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.ViewDragHelper.processTouchEvent(android.view.MotionEvent)' on a null object reference at biz.laenger.android.vpbs.ViewPagerBottomSheetBehavior.onTouchEvent(ViewPagerBottomSheetBehavior.java:320)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.