2017-04-05 16 views
0

コンテンツfitsSystemWindows:https://github.com/umano/AndroidSlidingUpPanelアンドロイド - umano SlidingUpPanelLayout - 私は次のライブラリを使用しています

は私がスクロールしたときに、ステータスバーの下に物事を表示したいと私は画面に合わせ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は決して画面に適合しません。

私が試したもう一つのやり方は、main_contentをmatch_paren(ライブラリはそうしたい)とmain_contentをSlidingUpPanelLayoutの中ではなく、前にある空のViewGroupに置き換えることです。第二の溶液と

<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> 

事は、私はすべてのタッチイベントをインターセプトし、私がメインのコンテンツにそれらを渡すために管理することができませんでした空の容器を持っているということです。

は、誰もが回避策を持っていますか?

答えて

0

[OK]をおかげで、私はを通して方法を見つけました。

私は、ライブラリを削除し、https://github.com/fedorenkoalex/bottomsheetrecycler/のようにカスタムBottomSheetBehaviorを使用。リンクをたどり、それがどのように実装されているかを見てください。ソリューションのためにfedorenkoalexに感謝します。

結果はほとんど同じですが、ネストされたリサイクラビュー(または他のスクロールビュー)をスクロールすると、もうスクロールできなくなった場合を除いてスクロールがうまく処理されます:RecyclerViewがすでに上端にあり上にスクロールしようとすると、下のシートが下に押し込まれます。それは直感的な行動であるため、最終的には悪くない。

0

あなたはこのXMLレイアウトを使用することができます。

<!-- MAIN CONTENT --> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    android:focusableInTouchMode="true" 
    android:orientation="vertical" 
    tools:context="com.amitupadhyay.clickin.in.amitupadhyay.clickin.ui.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" > 

     </android.support.v7.widget.Toolbar> 

     <android.support.design.widget.TabLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/tabLayout" 
      app:tabMode="scrollable" 
      app:tabGravity="fill" 
      app:tabTextAppearance="@style/MY_TAB_STYLE"> 
     </android.support.design.widget.TabLayout> 

    </android.support.design.widget.AppBarLayout> 

     <android.support.v4.view.ViewPager 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/viewPager"> 

     </android.support.v4.view.ViewPager> 

    <include layout="@layout/content_main" /> 

</LinearLayout> 


<!-- SLIDING LAYOUT --> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:clickable="true" 
    android:focusable="false" 
    android:id="@+id/dragView"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="68dp" 
     android:background="@color/colorPrimary" 
     android:id="@+id/bottomPannerLinearLayout" 
     android:orientation="horizontal"> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:textSize="14sp" 
      android:textColor="@android:color/white" 
      android:gravity="center_vertical" 
      android:paddingLeft="10dp"/> 

     <Button 
      android:id="@+id/follow" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:textSize="14sp" 
      android:gravity="center_vertical|right" 
      android:paddingRight="10dp" 
      android:paddingLeft="10dp"/> 

    </LinearLayout> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/side_nav_bar" 
      android:orientation="vertical"> 

      <TextView 
       android:id="@+id/anyid" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center"/> 


      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="55dp" 
       android:id="@+id/anyotherid" 
       style="@style/AppTheme.Button" 
       android:layout_marginTop="20dp" 
       android:layout_gravity="center_horizontal" 
       android:textStyle="bold" 
       android:padding="10dp" 
       android:textSize="20sp" 
       android:text="Submit"/> 

     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

これは私にとって素晴らしい作品。 :)ご返信用

+0

おかげで、私はSlidingUpPanelLayout内のコードを複製し、私はまだステータスバーの高さであるSlidingUpPanelLayoutためのパディングトップを取得します。私は* windowTranslucentStatus *、* windowActionBarOverlay *、* windowContentOverlay *のようないくつかの変数を試してみました。私はどこかで間違っているかもしれません。 – bengous

関連する問題