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

OneUi风格的导航Android java

荆钱明
2023-03-14

我是android编程的初学者,我想知道如何制作如图所示的OneUi风格的导航。

这就是我到目前为止所做的。不幸的是,当我滚动它,它将完全崩溃,我无法得到它回来。

我使用了AppBarLayout的CoordinatorLayout,并遵循材料中的一些代码。但是它没有像我预期的那样工作。我希望应用程序栏在滚动时短,在顶部时高。

以下是我的XML布局代码:

<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"

    android:background="#F0F0F0"

    tools:context=".MainActivity">

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

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            app:expandedTitleMarginStart="72dp"
            app:expandedTitleMarginBottom="28dp"

            app:layout_scrollFlags="scroll|snap">

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

                app:layout_collapseMode="pin"

                app:contentInsetStart="0dp">

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

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"

                        android:text="This is a text"
                        android:textSize="50dp"
                        />

                </RelativeLayout>

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

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

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

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false">



    </androidx.cardview.widget.CardView>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

共有1个答案

荀裕
2023-03-14

对于您的用例。你需要改变的事情很少。

>

  • AppBarLayout下面的内容放在NestedScrollView中,以滚动layout_behavior

    放一些内容来模仿滚动效果。例如,具有巨大高度的文本视图。

    将要折叠的内容放入一个折叠工具栏布局中,当其或未折叠时,基本上可以显示这些内容。

    把你的MaterialToolbar作为AppBarLayout的直接子元素

    示例代码:

    <?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"
        android:background="#F0F0F0"
        tools:context=".MainActivity">
    
        <com.google.android.material.appbar.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <com.google.android.material.appbar.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:expandedTitleMarginBottom="28dp"
                app:expandedTitleMarginStart="72dp"
                app:layout_scrollFlags="scroll|snap">
    
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:text="This is collapsing content"
                        android:textSize="32sp" />
    
                </RelativeLayout>
    
    
            </com.google.android.material.appbar.CollapsingToolbarLayout>
    
            <com.google.android.material.appbar.MaterialToolbar
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:contentInsetStart="0dp"
                app:layout_collapseMode="pin"
                app:title="This is MaterialToolbar" />
    
    
        </com.google.android.material.appbar.AppBarLayout>
    
        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
    
            <androidx.cardview.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:clipToPadding="false">
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="800dp"
                    android:text="Hello Test" />
    
    
            </androidx.cardview.widget.CardView>
    
        </androidx.core.widget.NestedScrollView>
    
    </androidx.coordinatorlayout.widget.CoordinatorLayout>
    

    输出:

    未折叠:

    倒塌:

  •  类似资料:
    • 在垂直导航中,如果存在多个分级,常常使用手风琴导航,它会以手风琴方式展开和折叠,来节约空间。 简单的说,手风琴导航就是垂直导航的层层嵌套,需要多少级,就嵌套多少层。这里就以两级导航为例,来介绍手风琴导航的基本制作方法。 为了方便控制手风琴导航的样式和行为,外层导航使用定义列表 dl、而内层使用无序列表 ul 来包裹导航中的链接元素: <dl class="accordion">     <dt>

    • 序幕 这份指南目的于演示一整套 Rails 3 开发的风格惯例及最佳实践。这是一份与由现存社群所驱动的Ruby 编码风格指南互补的指南。 而本指南中测试 Rails 应用小节摆在开发 Rails 应用之后,因为我相信行为驱动开发 (BDD) 是最佳的软体开发之道。铭记在心吧。 Rails 是一个坚持己见的框架,而这也是一份坚持己见的指南。在我的心里,我坚信 RSpec 优于 Test::Unit,

    • 导航窗格采用树状结构设计,可让你透过弹出式菜单快捷及方便地处理数据库和它们的对象。如果选项窗口中的“在导航窗格中的模式下显示对象”选项已勾选,所有数据库对象会显示在此窗格。若要连接到一个数据库或模式,简单地在此窗格中双击它。 在登录 Navicat Cloud 功能后,导航窗格会分为“Navicat Cloud”和“我的连接”两部分。 你可以点击树来对焦并输入搜索字符串来筛选树。若要只显示已打开的

    • 导航窗格采用树状结构设计,可让你透过弹出式菜单快捷及方便地处理数据库和它们的对象。如果偏好设置窗口中的“在导航窗格中的模式下显示对象”选项已勾选,所有数据库对象会显示在此窗格。若要连接到一个数据库或模式,简单地在此窗格中双击它。 在登录 Navicat Cloud 功能后,导航窗格会分为“Navicat Cloud”和“我的连接”两部分。 你可以在“搜索”文本框输入搜索字符串来筛选树。若要只显示已

    • 导航窗格采用树状结构设计,可让你透过弹出式菜单快捷及方便地处理数据库和它们的对象。如果选项窗口中的“在导航窗格中的模式下显示对象”选项已勾选,所有数据库对象会显示在此窗格。若要连接到一个数据库或模式,简单地在此窗格中双击它。 在登录 Navicat Cloud 功能后,导航窗格会分为“Navicat Cloud”和“我的连接”两部分。 你可以点击树来对焦并输入搜索字符串来筛选树。若要只显示已打开的

    • 本文向大家介绍jQuery实现类似标签风格的导航菜单效果代码,包括了jQuery实现类似标签风格的导航菜单效果代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现类似标签风格的导航菜单效果代码。分享给大家供大家参考。具体如下: 这是一款基于jquery实现的类似TAB标签样式的网站导航菜单,引入了jquery,若运行代码后左上角提示错误,刷新页面即可正常。你可点击菜单查看到