0

BottomSheet을 사용하는 많은 유용한 자습서가 NestedScrollView을 사용하고 있습니다. 그러나 현재 지원 라이브러리 버전 24.2.1을 사용하여 시도한 후, 필자가 왜 맨 위 패딩을 포함하고 있는지에 대한 단서가없는 채 며칠이 걸렸습니다. 최고 패딩이 왜 enter image description hereNestedScrollView를 사용하는 영구 BottomSheet에는 위쪽 패딩이 포함되어 있습니까? support-lib 24.2.1

: 다음은 결과입니다

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

:

<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 : 여기

내 활동의 레이아웃 XML인가? 이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

답변

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

필자의 경우에는 내 행동 노트에 이것을 추가하십시오. 이는 바닥 시트가 자동으로 패딩을주는 키보드입니다.

android:windowSoftInputMode="adjustPan"