代码之家  ›  专栏  ›  技术社区  ›  Sandip Savaliya

Recyclerview inside ViewPager位于嵌套滚动视图内

  •  1
  • Sandip Savaliya  · 技术社区  · 7 年前

    <?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"
        tools:ignore="RtlHardcoded">
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/main.appbar"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:background="@drawable/backg">
    
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/main.collapsing"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                app:contentScrim="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
    
                <FrameLayout
                    android:id="@+id/main.framelayout.title"
                    android:layout_width="match_parent"
                    android:layout_height="130dp"
                    android:layout_gravity="bottom"
                    android:background="#00000000"
                    android:orientation="vertical"
                    app:layout_collapseMode="parallax"
                    app:layout_collapseParallaxMultiplier="0.3">
    
                    <LinearLayout
                        android:id="@+id/main.linearlayout.title"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:paddingLeft="30dp"
                        android:layout_gravity="left"
                        android:orientation="vertical">
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:gravity="bottom"
                            android:text="User Name"
                            android:id="@+id/username"
                            android:textColor="@android:color/white"
                            android:textSize="30sp"/>
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="4dp"
                            android:id="@+id/business"
                            android:text="Users Business"
                            android:textColor="@android:color/white"/>
                    </LinearLayout>
    
                </FrameLayout>
    
                <android.support.v7.widget.Toolbar
                    android:id="@+id/main.toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="110dp"
                    android:background="#00000000"
                    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                    app:title=""
                    app:layout_collapseMode="pin">
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:orientation="horizontal">
    
                        <ImageView
                            android:layout_width="32dp"
                            android:layout_height="32dp"
                            android:id="@+id/back"
                            android:layout_marginTop="10dp"
                            android:background="@drawable/ic_arrow_back"/>
    
                        <TextView
                            android:id="@+id/main.textview.title"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:padding="12dp"
                            android:text="User Name"
                            android:textColor="@android:color/white"
                            android:textSize="24sp"
                            />
    
                    </LinearLayout>
                </android.support.v7.widget.Toolbar>
                <android.support.design.widget.TabLayout
                    android:id="@+id/tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="#00000000"
                    android:layout_gravity="bottom"
                    app:tabMode="fixed"
                    app:tabGravity="fill"
                    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
    
            </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"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:layout_gravity="fill_vertical"
            android:fillViewport="true"
            android:layout_marginBottom="110dp">
    
                 <android.support.v4.view.ViewPager
                    android:id="@+id/viewpager"
                    android:layout_width="match_parent"
                     android:layout_gravity="fill_vertical"
                    android:layout_height="match_parent"
                    android:background="@android:color/white">
                </android.support.v4.view.ViewPager>
        </android.support.v4.widget.NestedScrollView>
    </android.support.design.widget.CoordinatorLayout>
    

    现在我面临的问题是,当我在较低的操作系统版本上运行这个应用程序时,在所有的viewpager片段和viewviews中滚动都没问题,但当我使用安卓以上的操作系统时。M、 recyclerview的高度超出了显示屏,并且不足以在屏幕上看到该项目。请帮我解决我的问题。我已经设计了我的自定义折叠条布局,但在较低的安卓操作系统中,这一切都没问题。

    [已编辑]
    下面是我在actionbar大小的底部添加margin\u时的一些快照。
    enter image description here <--快照结束。
    您可以看到,当我们使用marginBottom时,viewpagers的高度小于屏幕大小。
    现在
    对于更高的变量,使用marginBottom时可以如下所示。
    enter image description here

    3 回复  |  直到 7 年前
        1
  •  2
  •   Sandip Savaliya    7 年前

    谢谢你们的评论和对我问题的回答,但在深入挖掘之后,我没有发现任何有用的东西,尽管可以通过编程设置高度。所以我尝试了下面的片段,这就像一个符咒。 对于更高的变量,在NestedScrollView的布局xml中使用actionbar大小设置marginBottom,对于较低的变量,使用下面的技巧。

     NestedScrollingView nsv = findViewByID(R.id.nsv);
    
     if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.M){
            android.support.design.widget.CoordinatorLayout.LayoutParams lpm = new android.support.design.widget.CoordinatorLayout.LayoutParams(
                    android.support.design.widget.CoordinatorLayout.LayoutParams.MATCH_PARENT, android.support.design.widget.CoordinatorLayout.LayoutParams.MATCH_PARENT);
            lpm.setMargins(0,0,0,0);
            lpm.setBehavior(new android.support.design.widget.AppBarLayout.ScrollingViewBehavior());
            nsv.setLayoutParams(lpm);
            nsv.requestLayout();
        }
    

        2
  •  0
  •   Sharath kumar    7 年前

    您可以尝试在ViewPagger的顶部添加linearLayout并进行尝试。

    <android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="800dp"
        android:orientation="vertical">
    
        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    
        3
  •  0
  •   Oliver Adam    7 年前

    如果我正确理解你的问题,你必须添加工具栏的边距(如你所说)。我通过添加 layout_gravity 如下所示。

    <android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_gravity="fill_vertical"
    android:layout_marginBottom="?attr/actionBarSize">