gpt4 book ai didi

android - Toolbar隐藏了PagerTitleStrip和部分RecyclerView

转载 作者:太空狗 更新时间:2023-10-29 13:15:26 24 4
gpt4 key购买 nike

Screenshot 1Screenshot 2我的应用

问题基本上是这样的:即使我已将 layout_behaviour 设置为我的 ViewPager,PagerTitleStrip 和 RecyclerView 仍位于我的工具栏下方。

更多细节:

我有一个使用下面布局的主要 Activity ,然后从中启动 fragment 。在尝试 CoordinatorLayout + ViewPager 和所有其他花哨的东西之前,我只有一个 FrameLayout,我在其中显示了我的 fragment 。但是,我决定要使用

app:layout_scrollFlags="scroll|enterAlways"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

这样当我滚动 recyclerview 时我的工具栏就会消失。我在网上发现 FrameLayout 没有任何行为允许我修复工具栏下方的 recyclerView 的位置,这就是为什么我更改为 ViewPager + CoordinatorLayout 来管理我的 fragment 。

但是,这引入了一些问题。我想要实现的是 - 一个附有 PagerTitleStrip 的工具栏,当我滚动工具栏时,工具栏消失,理想情况下让 PagerTitleStrip 可见,也许它也隐藏起来,我不太关心这个。但我希望我的抽屉导航继续工作,但它没有。就像不存在一样。

现在,第一个布局实际上具有上述所有功能,但问题是 strip 位于工具栏下方,除非我滚动时工具栏隐藏,否则它是不可见的。抽屉工作。不幸的是,回收器 View 项目部分隐藏在工具栏下方 - 即使我设置了它们,它们也不会从屏幕的正确位置开始滚动 - appbar_scrolling_view_behavior

我要展开的主要 Activity 的布局 m_drawerlayout.xml:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v4.view.PagerTitleStrip
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:layout_gravity="top"
android:textSize="15sp"
android:textColor="@color/tealfifty"
android:background="@color/teal">

</android.support.v4.view.PagerTitleStrip>
</android.support.v4.view.ViewPager>
<ListView
android:id="@+id/drawer_list"
android:background="@color/tealDark"
android:cacheColorHint="@android:color/transparent"
android:choiceMode="singleChoice"
android:divider="@drawable/list_divider"
android:dividerHeight="1dp"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>

<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/app_bar"/>

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

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

这是我的 app_bar.xml 的代码

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/top_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/teal"
app:theme="@style/ToolbarTheme"
app:popupTheme="@style/Green.Overlay.LightPopup"
app:layout_scrollFlags="scroll|enterAlways" >

<Spinner android:id="@+id/spinner"
android:layout_gravity="right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:paddingRight="20dp"
/>
</android.support.v7.widget.Toolbar>

我尝试将元素四处移动、移入和移出其他组件,但没有成功。例如,使 PagerTitleStrip 附加到工具栏并共享一个行为似乎是合乎逻辑的,我必须将 PagerTitleStrip 嵌套在 AppBar 布局中,但 PagerTitleStrip 必须是 ViewPager 的直接子项才能工作......任何建议所有这些?我是所有这些设计功能的新手,我研究了很多但没有成功,这里有类似的主题,但根本不是我需要的。与其他基本主题相比,互联网上似乎几乎没有关于我在上面尝试做的事情(有一些)。

如果有人想知道为什么我在没有选项卡时使用 ViewPager,那是因为正如我所说,FrameLayout 没有允许我正确使用消失的工具栏的行为,而这正是我发现很好用的东西。我还看到 NestedScrollView 可以使用,但我从来没有使用过它......我现在想可能使用 ViewPagerTitle,我想它限制了我对 fragment 的 ViewPager。

最佳答案

问题出在:

<android.support.design.widget.CoordinatorLayout 

<android.support.v4.widget.DrawerLayout

哪个DrawerLayout应该是根布局。

请参阅:http://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout

To add a navigation drawer, declare your user interface with a DrawerLayout object as the root view of your layout. Inside the DrawerLayout, add one view that contains the main content for the screen (your primary layout when the drawer is hidden) and another view that contains the contents of the navigation drawer.

另外,不推荐使用ListView而不是 NavigationView .

这是文档建议的方法(除了 ListView :) ):

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

还有:

However, that introduced a few problems. What I want to achieve is - A Toolbar with a PagerTitleStrip attached to it, when I scroll the toolbar disappears leaving the PagerTitleStrip visible ideally, maybe it hides as well I don't care that much about that. But I want my Navigation Drawer to keep working and it doesn't.

检查我对这个问题的回答:

https://stackoverflow.com/a/35241363/4409113

你只是把你的工具栏放在CollapsingToolbarLayout里面像这样:

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingtoolbarly"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|snap">

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

<ImageView
android:layout_width="match_parent"
android:layout_height="190dp"
android:minHeight="190dp"
android:scaleType="fitXY"
android:src="@drawable/header"
app:layout_collapseMode="parallax" />

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

它应该折叠起来,之后工具栏将被隐藏。如果你想保留它 PagerTitleStrip (目前推荐使用TabLayout),放在CollapsingToolbarLayout下方即可及以上 </android.support.design.widget.AppBarLayout>像这样:

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

<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="?attr/colorPrimary" />

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

差不多就这些了,祝你好运。

关于android - Toolbar隐藏了PagerTitleStrip和部分RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35241807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com