我正在使用下面的库:https://github.com/umano/AndroidSlidingUpPanel。
我想在滚动时在状态栏下面显示一些东西,但我不能使main_content (SlidingUpPanelLayout的第一个容器)适合屏幕。我想在滚动时在状态栏下面显示一些东西。
这是我的第一个xml配置:
<android.support.v4.widget.DrawerLayout 
    ...
    android:fitsSystemWindows="true">
    <com.hnhh.app3.fragments.model.FitsSystemWindowsFrameLayout
        ...
        android:fitsSystemWindows="true">
        <!-- This is where I don't get what I want,
             This container has always a padding top equals to the 
             status bar size, so it will always affect the direct 
             childs => main_content (my fragments container) -->
        <com.sothree.slidinguppanel.SlidingUpPanelLayout
            android:id="@+id/sliding_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true" // seems to not be supported
            android:gravity="bottom"
            ...>
            <!-- Main content - fragments placeholder -->
            <com.hnhh.app3.fragments.model.FitsSystemWindowsFrameLayout
                android:id="@+id/main_content"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true" // if the parent doesn't it will not either.
                tools:background="@color/colorAccent" />
            <!-- Panel     -->
            <FrameLayout
                android:id="@+id/..."
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:clickable="true"
                android:fitsSystemWindows="false" />
        </com.sothree.slidinguppanel.SlidingUpPanelLayout>
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom">
            <com.hnhh.app3.widgets.BannerAdWrapper.../>
        </FrameLayout>
    </com.hnhh.app3.fragments.model.FitsSystemWindowsFrameLayout>
    <include layout="@layout/navigation" />
</android.support.v4.widget.DrawerLayout>我尝试了几个家长的sliding_layout,但我不能设法拥有所需的行为。sliding_layout永远不适合屏幕。
我尝试过的另一种方法是用一个空的ViewGroup替换main_content,它必须是match_paren的(库希望是这样的),main_content不是在SlidingUpPanelLayout内部,而是在它之前。
<android.support.v4.widget.DrawerLayout >
    <com.hnhh.app3.fragments.model.FitsSystemWindowsFrameLayout>
        <!-- NEW Main content - fragments placeholder -->
        <com.hnhh.app3.fragments.model.FitsSystemWindowsFrameLayout />
        <com.sothree.slidinguppanel.SlidingUpPanelLayout>
            <!--  Replaced old main_content with empty     -->
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
            <!--  Panel     -->
            <FrameLayout />
        </com.sothree.slidinguppanel.SlidingUpPanelLayout>
        <FrameLayout>
            <com.hnhh.app3.widgets.BannerAdWrapper/>
        </FrameLayout>
    </com.hnhh.app3.fragments.model.FitsSystemWindowsFrameLayout>
    <include layout="@layout/navigation" />
</android.support.v4.widget.DrawerLayout>第二个解决方案的问题是,我有一个空的容器,它将拦截所有的触摸事件,但我无法将它们传递给主要内容。
有谁有变通办法吗?谢谢
发布于 2017-04-07 01:49:12
好了,我找到了一条路。
我删除了这个库,并使用了一个像https://github.com/fedorenkoalex/bottomsheetrecycler/一样的自定义BottomSheetBehavior。点击链接,看看它是如何实现的。感谢fedorenkoalex的解决方案。
结果几乎是一样的,唯一的事情是当你滚动嵌套回收器视图(或其他滚动视图)时,它将很好地处理滚动,除非你不能再向上滚动:如果RecyclerView已经在顶部,而您试图滚动顶部,那么它将向下推动底部页面。归根结底,这不是坏事,因为这是一种直觉行为。
https://stackoverflow.com/questions/43238890
复制相似问题