【问题标题】:SwipeRefreshLayout with NestedScrollView and LinearLayoutSwipeRefreshLayout 与 NestedScrollView 和 LinearLayout
【发布时间】:2015-08-29 12:40:53
【问题描述】:
<RelativeLayout 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">

    <!--<include-->
    <!--android:id="@+id/app_bar"-->
    <!--layout="@layout/app_bar" />-->


    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/rootLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/app_bar">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="256dp">

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

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:scaleType="centerCrop"
                    android:src="@drawable/header"
                    app:layout_collapseMode="parallax"
                    app:layout_collapseParallaxMultiplier="0.7" />

                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbarTutorial"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:minHeight="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

                <TextView
                    android:id="@+id/textViewAppBar"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_gravity="bottom"
                    android:gravity="center"
                    android:scrollbarDefaultDelayBeforeFade="@id/toolbarTutorial"
                    android:text="test"
                    android:textColor="@color/white"
                    android:textSize="30sp" />


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

            <!--<android.support.design.widget.TabLayout-->
            <!--android:id="@+id/tabLayout"-->
            <!--android:layout_width="match_parent"-->
            <!--android:layout_height="wrap_content"-->
            <!--app:layout_scrollFlags="scroll|enterAlways"/>-->

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


        <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/swipe_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v4.widget.NestedScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fillViewport="true"
                app:layout_behavior="@string/appbar_scrolling_view_behavior">


                <!--<android.support.v4.widget.SwipeRefreshLayout-->
                <!--android:id="@+id/activity_main_swipe_refresh_layout"-->
                <!--android:layout_width="match_parent"-->
                <!--android:layout_height="wrap_content">-->
                <LinearLayout
                    android:id="@+id/linearLayoutWithData"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior">

                    <!--<TextView-->
                    <!--android:id="@+id/textViewInternet"-->
                    <!--android:layout_width="match_parent"-->
                    <!--android:layout_height="wrap_content"-->
                    <!--android:textColor="@color/black"/>-->


                </LinearLayout>
                <!--</android.support.v4.widget.SwipeRefreshLayout>-->
            </android.support.v4.widget.NestedScrollView>
        </android.support.v4.widget.SwipeRefreshLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/btnFAB"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_marginBottom="@dimen/codelab_fab_margin_bottom"
            android:layout_marginRight="@dimen/codelab_fab_margin_right"
            android:src="@drawable/ic_plus_blue"
            app:fabSize="normal">

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

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

我希望带有数据的线性布局位于“textViewAppBar”下方。我试图实现一个RelativeLayout,但它不起作用。现在,数据显示为完整布局,但我希望将其放在“textViewAppBar”下方,但 SwipeRefreshLayout 应为 match_parent,有什么建议吗?谢谢:-)

【问题讨论】:

    标签: android swiperefreshlayout


    【解决方案1】:

    app:layout_behavior 应该添加到CoordinatorLayout 的直接子代中。

    所以你应该把app:layout_behavior="@string/appbar_scrolling_view_behavior"从NestedScrollView移到SwipeRefreshLayout。

    <android.support.design.widget.CoordinatorLayout ...>
    
        <android.support.design.widget.AppBarLayout  ...>
            ...
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.SwipeRefreshLayout 
            android:id="@+id/swipe_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
            <android.support.v4.widget.NestedScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fillViewport="true">
                ...
            </android.support.v4.widget.NestedScrollView>
    
        </android.support.v4.widget.SwipeRefreshLayout>
    
    </android.support.design.widget.CoordinatorLayout>
    

    【讨论】:

      【解决方案2】:

      app:layout_behavior 应该添加到 CoordinatorLayout 的直接子级中。并且在您需要在 SwipeLayout 中使用 NestedScrollView 之后;

      <android.support.v4.widget.SwipeRefreshLayout 
          android:id="@+id/swipe_container"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          app:layout_behavior="@string/appbar_scrolling_view_behavior">
      
          <android.support.v4.widget.NestedScrollView
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:fillViewport="true">
              ...
          </android.support.v4.widget.NestedScrollView>
      
      </android.support.v4.widget.SwipeRefreshLayout>
      

      【讨论】:

        【解决方案3】:

        使用这个

        <android.support.v4.widget.SwipeRefreshLayout 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:id="@+id/swipeContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
        <android.support.design.widget.CoordinatorLayout
            ... your attribute here ... >
        
            <android.support.design.widget.AppBarLayout
                ... your attribute here ... >
        
                <android.support.design.widget.CollapsingToolbarLayout
                    ... your attribute here ... >
        
                    ... your element here ...
        
                </android.support.design.widget.CollapsingToolbarLayout>
        
            </android.support.design.widget.AppBarLayout>
        
            <android.support.v4.widget.NestedScrollView
                ... your attribute here ... >
        
                ... your element here ...
        
            </android.support.v4.widget.NestedScrollView>
        </android.support.design.widget.CoordinatorLayout>
        

        【讨论】:

        • 这样,可折叠布局不起作用..意味着它没有折叠
        【解决方案4】:

        我自己解决了将 SwipeRefreshLayout 作为主布局,其余作为子布局添加

        【讨论】:

        • 可以分享一下sn-p 可能吗?哪个主布局?
        • @RahulPatil 在下面看看我的答案
        【解决方案5】:

        你需要添加你的代码:

                recyclerView.setNestedScrollingEnabled(false)
        

        【讨论】:

        • 应该在哪里添加?
        • @NinoFiliu 当你初始化 recyclerView
        猜你喜欢
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        • 2018-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多