Persistent BottomSheet使用NestedScrollView,它包含顶部填充? support-lib 24.2.1

时间:2016-12-16 09:48:20

标签: android android-support-library android-support-design bottom-sheet

有许多很好的教程使用 `$new_image_name = '2018_'.mt_rand(); $base_url = 'https://www.habbo.com/habbo-imaging/avatarimage?figure=hr-125&direction=3&head_direction=3&headonly=1&gesture=sml&size=1'; $img = "./image_path/$new_image_name.jpg"; file_put_contents($img,file($base_url)); $local_image_url = "http://example.org/test/path_to_image/$new_image_name.jpg";` 来讨论 BottomSheet 。但是在我使用我目前的支持库版本24.2.1进行尝试之后,我花了几天时间毫不知道为什么我的包含顶部填充。

这是我的活动布局xml:

NestedScrollView

BottomSheet的布局<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>

fragment_bottom_sheet_song.xml

然后这是结果: enter image description here

为什么有顶部填充?我该如何解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:1)

经过几天的努力,我发现为了解决这个问题,持久性底部工作表布局容器必须是>>> from collections import defaultdict >>> d = defaultdict(list) >>> d defaultdict(list, {}) >>> d[3] [] >>> d defaultdict(list, {3: []}) 。如果不是(就像我的情况,我将FrameLayout直接包括在内并使其成为底页),它将包含默认的顶部填充,我仍然不知道为什么。

所以这是我要修复的新Activity的xml布局代码:

NestedScrollView

希望这也对你有帮助。

答案 1 :(得分:1)

我认为您需要从此视图的根布局android:fitsSystemWindows="true"中删除标签android.support.design.widget.CoordinatorLayout。您的源代码布局将是这样。

<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"
    tools:context=".ui.MainActivity">

<!-- children contents -->

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

希望获得帮助。

答案 2 :(得分:0)

尝试在您的活动清单中添加此内容,显然在我的情况下,键盘会导致底片自动填充。

android:windowSoftInputMode="adjustPan"