带有可折叠工具栏的BottomSheetDialog

时间:2017-08-26 14:20:58

标签: android android-layout bottom-sheet

您好我正在尝试制作一个从android屏幕底部出现的对话框。在搜索时我发现我可以使用BottomSheetDialog。现在我想在BottomSheetDialog中使用带有imageview的可折叠工具栏。我想显示DETAILS (当名称,信息,手机号码等作为简单的文本视图时)我的图像在向上滚动时折叠。 我的问题是:   
1.当我添加布局NestedScrollView以显示DETAILS时,文本最初与图像重叠,但是当图像折叠时,文本不再与图像重叠。文本位置保持固定,向上滚动时图像不会向上移动,滚动体验非常非常差。   
2.当我添加线性布局以显示DETAILS时,文本出现在我的可折叠工具栏图像上。

这是我的对话框布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    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"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

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

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/profile_activity_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">

            <ImageView
                android:id="@+id/panel_profile_picture"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7" />

            <!--<android.support.v7.widget.Toolbar-->
                <!--android:id="@+id/toolbar"-->
                <!--android:layout_width="match_parent"-->
                <!--android:layout_height="?attr/actionBarSize"-->
                <!--app:layout_collapseMode="parallax"-->
                <!--app:popupTheme="@style/AppTheme.PopupOverlay" />-->
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <!--<ADD A LAYOUT HERE TO SHOW TEXTVIEW FOR DETAILS LIKE NAME,INFORMATION ETC>-->

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

在活动中触摸卡片时会出现bottomSheetDialog。这是我的代码,显示了bottomSheetDialog:

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

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/profile_activity_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">

            <ImageView
                android:id="@+id/panel_profile_picture"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7" />

            <!--<android.support.v7.widget.Toolbar-->
                <!--android:id="@+id/toolbar"-->
                <!--android:layout_width="match_parent"-->
                <!--android:layout_height="?attr/actionBarSize"-->
                <!--app:layout_collapseMode="parallax"-->
                <!--app:popupTheme="@style/AppTheme.PopupOverlay" />-->
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <!--<ADD A LAYOUT HERE TO SHOW TEXTVIEW FOR DETAILS LIKE NAME,INFORMATION ETC>-->

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

在不折衷可折叠工具栏的情况下,我应该使用什么来很好地展示我的DETAILS?我希望当我的图像折叠并向上移动时,texview会出现,并且在向上滚动时也会向上移动。

PS:请评论是否需要发布任何不清楚或更相关的代码。 TIA

1 个答案:

答案 0 :(得分:0)

我找到了符合我目的的内容。我使用FrameLayout将应用行为设为app:layout_behavior="@string/appbar_scrolling_view_behavior"
因此,当您触摸图像并向上滚动时,图像会折叠,并且滚动时细节也会向上移动。但是,通过触摸细节,图像无法折叠布局和向上滚动。一个人必须触摸图像并向上滚动。在找到更好的解决方案之前,这符合我的目的。
所以我的底页对话框的布局文件是:

<?xml version="1.0" encoding="utf-8"?>
    <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"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">


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

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/profile_activity_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">

            <ImageView
                android:id="@+id/panel_profile_picture"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7" />

            <!--<android.support.v7.widget.Toolbar-->
                <!--android:id="@+id/toolbar"-->
                <!--android:layout_width="match_parent"-->
                <!--android:layout_height="?attr/actionBarSize"-->
                <!--app:layout_collapseMode="parallax"-->
                <!--app:popupTheme="@style/AppTheme.PopupOverlay" />-->
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:orientation="vertical">
           <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="This is detial 1"
                android:padding="20dp"
                android:gravity="center"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="This is detial 2"
                android:padding="20dp"
                android:gravity="center"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="This is detial 3"
                android:padding="20dp"
                android:gravity="center"/>

        </LinearLayout>

    </FrameLayout>

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

`