【问题标题】:NestedScrollView in CoordinatorLayout hiding bottom widgetsCoordinatorLayout 中的 NestedScrollView 隐藏底部小部件
【发布时间】:2016-09-26 02:31:17
【问题描述】:

我刚刚在我的项目中遇到了一个问题,这个问题似乎已经有一段时间了。

我有一个CoordinatorLayout,其中有一个AppBarLayout 和一个NestedScrollView。我正在使用CollapsibleToobarLayout,它工作得很好。问题是NestedScrollView 没有按应有的方式上下滚动。在toolbar 折叠后,它不再滚动,将下面的小部件隐藏起来。

我尝试了android:fillViewPort="true"android:layout_gravity="fill_vertical",但没有任何变化。这是代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@style/MyMaterialTheme"
    android:fitsSystemWindows="true"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:id="@+id/appBar"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/collapsingToolbar"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="10dp"
            app:expandedTitleMarginEnd="10dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:background="@color/colorPrimary">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                android:background="@drawable/bgPicture"
                app:layout_collapseMode="pin"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:titleTextAppearance="@style/Toolbar.TitleText"
                android:layout_gravity="top"
                app:layout_collapseMode="pin"
                android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                >

                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/custom_trash"
                    android:clickable="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:layout_gravity="end"
                    android:id="@+id/deleteButton"/>

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

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

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:fitsSystemWindows="true"
        android:layout_gravity="fill_vertical"
        android:background="@color/grey"
        android:clipToPadding="false"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:fillViewport="true">

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingTop="10dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:id="@+id/tableLayout">

            <TableRow
                android:layout_height="wrap_content"
                android:layout_width="wrap_content">



                <RelativeLayout
                    android:layout_width="0dp"
                    android:layout_height="100dp"
                    android:layout_centerHorizontal="false"
                    >

                    <TextView
                        android:layout_height="wrap_content"
                        android:layout_width="0dp"
                        android:id="@+id/goalIdTextView"
                        android:visibility="gone"
                        />
                    <ProgressBar
                        android:id="@+id/progress"
                        android:layout_width="match_parent"
                        android:indeterminate="false"
                        android:max="100"
                        android:progress="60"
                        android:progressDrawable="@drawable/circular_progress_bar"
                        android:layout_height="match_parent"
                        style="?android:attr/progressBarStyleHorizontal"
                        android:layout_centerHorizontal="true" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:text="100%"
                        android:textColor="#000000"
                        android:textSize="20sp"
                        android:textStyle="bold"/>

                </RelativeLayout>



                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:textAlignment="gravity"
                    android:layout_gravity="right"
                    android:id="@+id/progressText"
                    />

            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="5dp">


            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="5dp">

                <EditText
                    android:layout_weight="1"
                    android:id="@+id/goalTitle"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:background="@android:drawable/editbox_background_normal"
                    android:paddingTop="14dp"
                    android:textCursorDrawable="@null"
                    android:paddingBottom="11dp"
                    android:hint="Goal Title"/>
            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="5dp">

                <TextView
                    android:layout_height="wrap_content"
                    android:layout_width="match_parent"
                    android:layout_weight="1"
                    android:text="@string/deadline_text"
                    android:textStyle="bold"
                    />
            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="5dp">

                <EditText
                    android:id="@+id/dateEditText"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:layout_weight="1"
                    android:focusable="false"
                    android:inputType="date"
                    android:background="@android:drawable/editbox_background_normal"
                    android:paddingTop="14dp"
                    android:paddingBottom="11dp"
                    />

                <ImageButton
                    android:id="@+id/selectDate"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:layout_weight="0"
                    android:layout_toRightOf="@+id/date"
                    android:contentDescription="@string/select_date"
                    android:cropToPadding="true"
                    android:background="@drawable/calendar_icon"/>

            </TableRow>
            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="5dp">

                <TextView
                    android:layout_height="wrap_content"
                    android:layout_width="match_parent"
                    android:layout_weight="1"
                    android:text="@string/tasks_label"
                    android:textStyle="bold"
                    />
            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <ListView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/listView"
                    android:paddingTop="5dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingBottom="10dp"
                    android:background="@android:drawable/editbox_background_normal"
                    android:layout_centerHorizontal="true" />

            </TableRow>


            <TableRow
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:background="@color/colorPrimary">

                <Button
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:textAllCaps="false"
                    android:id="@+id/updateButton"
                    android:textColor="#000"
                    android:onClick="updateGoal"
                    android:textAppearance="?android:textAppearanceLarge"
                    android:text="@string/submit"
                    />
            </TableRow>
        </TableLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

ListView 之后的任何内容都不会显示在屏幕上,也不能滚动到视图中。 我已经在 Whatsapp 等应用程序中看到了这一点。单击一个组将带您进入该活动,其中个人资料图片显示在可折叠的工具栏中,然后是共享的图像、该组中的完整人员列表以及页面底部的退出按钮。我尝试了几种方法来实现这一点,但我没有运气。

【问题讨论】:

    标签: android


    【解决方案1】:

    试试这个。我稍微修改了你的代码,但它会为你工作

    <?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"
        android:fitsSystemWindows="true">
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/appBar"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapsingToolbar"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/colorPrimary"
                app:contentScrim="?attr/colorPrimary"
                app:expandedTitleMarginEnd="10dp"
                app:expandedTitleMarginStart="10dp"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">
    
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@drawable/complete_eco_slide"
                    android:fitsSystemWindows="true"
                    android:scaleType="centerCrop"
                    app:layout_collapseMode="pin" />
    
                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    android:layout_gravity="top"
                    android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                    app:layout_collapseMode="pin">
    
                    <ImageButton
                        android:id="@+id/deleteButton"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentEnd="true"
                        android:layout_alignParentRight="true"
                        android:layout_gravity="end"
                        android:background="@drawable/check"
                        android:clickable="true" />
    
                </android.support.v7.widget.Toolbar>
    
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="fill_vertical"
            android:layout_weight="1"
            android:background="#666666"
            android:clipToPadding="false"
            android:fitsSystemWindows="true"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
            <LinearLayout
                android:id="@+id/tableLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:paddingTop="10dp">
    
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
    
    
                    <RelativeLayout
                        android:layout_width="1dp"
                        android:layout_height="100dp"
                        android:layout_centerHorizontal="false">
    
                        <TextView
                            android:id="@+id/goalIdTextView"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:visibility="gone" />
    
                        <ProgressBar
                            android:id="@+id/progress"
                            style="?android:attr/progressBarStyleHorizontal"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:layout_centerHorizontal="true"
                            android:indeterminate="false"
                            android:max="100"
                            android:progress="60" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_centerInParent="true"
                            android:text="100%"
                            android:textColor="#000000"
                            android:textSize="20sp"
                            android:textStyle="bold" />
    
                    </RelativeLayout>
    
    
                    <TextView
                        android:id="@+id/progressText"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_gravity="right"
                        android:textAlignment="gravity" />
    
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:paddingBottom="5dp">
    
                    <EditText
                        android:id="@+id/goalTitle"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:background="@android:drawable/editbox_background_normal"
                        android:hint="Goal Title"
                        android:paddingBottom="11dp"
                        android:paddingTop="14dp"
                        android:textCursorDrawable="@null" />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:paddingTop="5dp">
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="dfsdgfg"
                        android:textStyle="bold" />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:paddingBottom="5dp">
    
                    <EditText
                        android:id="@+id/dateEditText"
                        android:layout_width="0dp"
                        android:layout_weight="0.9"
                        android:layout_height="wrap_content"
                        android:background="@android:drawable/editbox_background_normal"
                        android:ems="10"
                        android:focusable="false"
                        android:inputType="date"
                        android:paddingBottom="11dp"
                        android:paddingTop="14dp" />
    
                    <ImageButton
                        android:id="@+id/selectDate"
                        android:layout_width="0dp"
                        android:layout_weight="0.1"
                        android:layout_height="wrap_content"
                        android:background="@drawable/calendar"
                        android:contentDescription="asda"
                        android:cropToPadding="true" />
    
                </LinearLayout>
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="asdas"
                    android:textStyle="bold" />
    
    
                <ListView
                    android:id="@+id/listView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@android:drawable/editbox_background_normal" />
    
    
                <Button
                    android:id="@+id/updateButton"
                    android:layout_width="wrap_content"
                    android:layout_height="100dp"
                    android:onClick="updateGoal"
                    android:text="submit"
                    android:textAllCaps="false"
                    android:textAppearance="?android:textAppearanceLarge"
                    android:textColor="#000" />
            </LinearLayout>
        </android.support.v4.widget.NestedScrollView>
    </android.support.design.widget.CoordinatorLayout>
    

    【讨论】:

    • 我使用了线性布局,然后甚至是相对布局。我看到底部小部件的唯一方法是删除 NestedScrollView 中的 layout_behavior。在预览中,您实际上可以在屏幕外看到嵌套滚动视图的底部。运行应用程序时,一旦可折叠工具栏折叠,嵌套滚动视图就会停止滚动。我的意思是,大多数滚动视图都有一种方式告诉用户他已经到达终点(就像我的 KitKat 中视图末尾的橙色),好吧,这个嵌套的滚动视图没有到达那部分。我说得有道理吗?
    • 是的,我有......遗憾的是,没有运气
    • 您希望始终或最后看到您的按钮“updateButton”
    • 我想在最后看到它.. 那是在滚动之后
    • 您可以在 ListView 的页脚添加按钮。这肯定会有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多