0

有很多漂亮的教程在談論底部表格使用NestedScrollView。但是,當我使用當前的支持庫版本24.2.1進行嘗試時,我花了幾天的時間,對於爲什麼我的包含頂部填充的內容毫無頭緒。使用NestedScrollView的持久BottomSheet,它包含頂部填充? support-lib 24.2.1

這裏是我的Activity的佈局XML:

<android.support.design.widget.CoordinatorLayout 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" 
    tools:context=".ui.MainActivity"> 

    <!-- AppBar --> 
    <include 
     android:id="@+id/appBar" 
     layout="@layout/app_bar_layout_with_tab" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabPager="@{tabPager}" /> 

    <!-- Content --> 
    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefresh" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <FrameLayout 
      android:id="@+id/container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 

    <!-- [START] BottomSheet --> 
    <include 
     android:id="@+id/bottomSheetMain" 
     layout="@layout/fragment_bottom_sheet_song" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fitsSystemWindows="true" 
     app:behavior_hideable="false" 
     app:behavior_peekHeight="0dp" 
     app:layout_behavior="@string/bottom_sheet_behavior" /> 
    <!-- [END BottomSheet] --> 

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

而且BottomSheet的佈局fragment_bottom_sheet_song.xml

<android.support.v4.widget.NestedScrollView 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/bgBottomSheetPlayer"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <include 
      android:id="@+id/bottomSheetPlayer" 
      layout="@layout/view_bottom_sheet_player_dark" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:playAction="@{playAction}" 
      app:playObject="@{playSong}" /> 

     <include 
      android:id="@+id/bottomSheetContent" 
      layout="@layout/view_action_detail_song" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:playSong="@{playSong}" 
      app:songActionHandler="@{songActionHandler}" /> 
    </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

那麼這樣的結果: enter image description here

爲什麼有頂邊距?我怎樣才能解決這個問題?

謝謝。

回答

0

嘗試了幾天後,我發現要解決這個問題,持久性底部圖紙佈局容器必須是FrameLayout。如果沒有(就像我的情況一樣,我包含了NestedScrollView直接並將它變成底部表),它將包含默認的頂部填充,我仍然不知道爲什麼。

因此,這裏是我的新活動的XML佈局代碼來解決:

<!-- [START] BottomSheet --> 
<FrameLayout 
    android:id="@+id/bottomSheetParent" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fitsSystemWindows="true" 
    app:behavior_hideable="false" 
    app:behavior_peekHeight="0dp" 
    app:layout_behavior="@string/bottom_sheet_behavior"> 

    <include 
     android:id="@+id/bottomSheetMain" 
     layout="@layout/fragment_bottom_sheet_song" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</FrameLayout> 
<!-- [END BottomSheet] --> 

希望這有助於你。

0

嘗試將此添加到您的活動清單中,顯然在我的情況下,它是使Bottomsheet自動填充的鍵盤。

android:windowSoftInputMode="adjustPan"