当前位置: 首页 > 知识库问答 >
问题:

用appbarlayout在Scrollview中插入tablayout

孙志
2023-03-14

我的安卓应用程序想要有一个像Facebook页面的页面,当滚动到表格下时,把表格显示在屏幕顶部。

关于这个话题,我找到了几个答案。

将TabLayout固定在工具栏滚动视图的顶部和下方

如何使表布局固定在动作栏下面?

然而,他们不想要我的应用情况,因为我想保持我的cardview和tablayout在滚动视图。 我的xml模板如下所示。 任何洞察力或解决方案都可以分享吗?


<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.appbar.AppBarLayout 
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:liftOnScroll="true">

<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways|snap">

//toolbar content
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>

<androidx.core.widget.NestedScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<androidx.cardview.widget.CardView
android:id="@+id/checkinhome"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Content card1"
android:textAppearance="@style/TextAppearance.AppCompat.Display3" />
</androidx.cardview.widget.CardView>

<androidx.cardview.widget.CardView
android:id="@+id/checkinhome"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Content card2"
android:textAppearance="@style/TextAppearance.AppCompat.Display3" />
</androidx.cardview.widget.CardView>
<com.google.android.material.tabs.TabLayout

android:layout_width="match_parent"
android:layout_height="match_parent">


</com.google.android.material.tabs.TabLayout>


<androidx.viewpager2.widget.ViewPager2
android:layout_width="match_parent"
android:layout_height="match_parent"
/>

</LinearLayout>
</androidx.core.widget.NestedScrollView>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

共有1个答案

龙佐
2023-03-14

我相信你使用的是不必要的布局,请尝试遵循指导原则-

MainLayout文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.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">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:contentScrim="@color/colorPrimaryDark"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">

<!--         you can put any content you want to hide after scroll in header-->
<!--         as example in putting this image view-->
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:padding="20dp"
                android:scaleType="fitCenter"
                android:src="@drawable/default_img"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.25" />

            <com.google.android.material.tabs.TabLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom" />

        </com.google.android.material.appbar.CollapsingToolbarLayout>

    </com.google.android.material.appbar.AppBarLayout>

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <!--            put content of scroll view here -->
        <include layout="scroll_content_layout" />

    </androidx.core.widget.NestedScrollView>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

文件scroll_content_layout.xml将包含您希望作为滚动视图一部分的内容。

滚动内容文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <androidx.viewpager2.widget.ViewPager2
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    
<!--    some other layout as part of scroll view -->
        
</LinearLayout>

快乐编码-

 类似资料:
  • 我正在使用AppBarLayout和CollasingToolBarLayout的新CoordinatorLayout。在AppBarLayout下面,我有一个包含内容列表的RecyclerView。 我已经验证了当我在列表上下滚动时,fling scrolling可以在RecyclerView上工作。不过,我也希望AppBarLayout在扩展期间能够平滑滚动。 当向上滚动以展开CollaSpi

  • 我有一个AppBarLayout和NestedScrollView。我希望每当NestedScrollView向下滚动时,AppBarLayout也应该优雅地展开,而NestedSScrollView不会在AppBarLayoutExpand之前停止;需要第二次飞行/滚动才能完成。 我检查了堆栈溢出,发现这个解决方案非常相关,可以使用。但相反,如果NestedScrollView,它是Recycl

  • 我正在创建一个<code>RecyclerView</code>,其中当您向上滚动<code>RecyclerView>时,标题会折叠。我可以通过下面的布局实现这一点,使用透明的和,这是标题。视差效果很好。 但是,如果标头仍然可见,并且我抛出,RV会慢慢滚动到顶部,并且一些项目在工具栏下,直到RV到达视图的顶部。我一直在玩,但没有达到理想的结果。关于如何改善抛出体验以使项目不被剪切的任何建议? 观

  • 我试图在滚动视图中显示水平的recyclerview项和垂直的recyclerview项 即使我使用android:fillViewport=“true”,Scrollview也无法工作

  • 问题内容: 我有一个具有contenteditable设置的div,并且在按下回车键时使用jquery捕获了按键,以调用preventDefault()。类似于 这个在光标处插入文本的问题,我想直接插入html,为简便起见,我们将其称为br标签。使用上面问题的答案实际上在IE中有效,因为它使用range.pasteHTML方法,但是在其他浏览器中,br标签将显示为纯文本而不是html。如何修改答案

  • 我正在android中学习RxJava2。谁能解释一下,我们如何使用RxJava2将数据插入SQLiteDatabase。这里是我试图使用的代码示例,但它将数据插入数据库六次; //OnClick(单击) //可观察 //观察员 //添加方法

  • 二叉搜索树(BST)和二叉树(BT)中的插入有什么区别?我知道,在BST中,您将新节点的值与根进行比较,如果较小,则添加到其左侧,如果较大,则将其添加到根的右侧。BT的程序是否相同?如果没有,插入和移除的步骤是什么?

  • 问题内容: 我有对象的arraylist,并尝试将列表插入HANA。所以我的插入代码看起来像 } 这里 返回一个整数数组。 但这无法正常工作。根据我的程序每次都会调用ARRAY函数,但是为什么不将其插入HANA数据库中呢,所以过了一会儿我才知道我必须将JAVA Array转换为HANA Array。如何转换Java Array到HANA阵列。任何帮助表示赞赏。 问题答案: @RKR好的,这里有您的