CoordinatorLayout是一个超级动力的FrameLayout。
检测AppBarLayout/CollapsingToolbarLayout何时完全展开
我有一个使用新的 CoordinatorLayout/AppBarLayout/CollapsingToolbarLayout 范例的片段,我希望能够检测到折叠工具栏何时完全展开,以便我可以...
我有这样的布局: 我有这个布局: <?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" android:fitsSystemWindows="true" tools:context="ca.usherbrooke.whapl.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" app:elevation="4dp"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="bottom" android:orientation="horizontal" android:paddingTop="5dp" android:paddingBottom="10dp" android:background="@color/colorPrimary" > <ImageView android:id="@+id/previous" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_action_previous"/> <ImageView android:id="@+id/play_pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_action_play"/> <ImageView android:id="@+id/next" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_action_next"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="bottom" android:orientation="horizontal" android:paddingBottom="10dp" android:background="@color/colorPrimary" > <TextView android:layout_marginLeft="10dp" android:id="@+id/songname" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/white" /> </LinearLayout> </LinearLayout> 当我的 fragment_container 中有一个 ListView 时,带有播放/暂停/下一个/快退按钮的播放器始终位于容器上方,因此我无法访问列表视图中的最后一个元素,因为它位于我的播放器后面(线性在fragment_container之后的布局)。 我应该更改什么才能使容器仅占据其现有位置并且不会进入我的播放器下方? 顺便说一句,这个布局包含在我的主要活动的布局中,它是一个包含我的容器+一个导航视图的 DrawerLayout。 向容器添加一个等于玩家高度的 android:layout_marginBottom 属性。
有一个CoordinatorLayout,其中包含一个AppBarLayout和一个NestedScrollView,其中有一个TextView。 TextView 有 Markdown 文本。我想滚动到锚点(#header)。下面的代码...
CoordinatorLayout 中的 ViewPager(用于粘性标题)会导致滚动中断
测试应用程序在此处演示问题:https://github.com/jstubing/ViewPagerTest 我使用 CoordinatorLayout/AppBarLayout 组合在可滚动页面中实现粘性标题。就在...
AppBarLayout 显示意外行为?如何在 CollapsibleToolBarLayout 中禁用应用程序标题?
我无法理解为什么应用程序名称出现在后台? 我在其他项目中复制了相同的布局,并且显示了相同的结果(仅应用程序名称更改为当前项目)...
ViewPager 在 Coordinator 布局中的高度超出了可用范围
我有一个CoordinatorLayout,在AppBarLayout 中有一个Toolbar 和一个TabLayout。此外,我在 CoordinatorLayout 内部但在 ViewPager 外部有一个 ViewPager。 问题是
我在CoordiantorLayout中有一个AppBar和RecyclerView。 SwipeToRefresh 必须全屏,但 RecyclerView 不能向下滚动。 我在 AppBar 中有一个 RecyclerView 和 CoordiantorLayout。 SwipeToRefresh 必须全屏,但 RecyclerView 不能向下滚动。 <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="128dp"/> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> 如何在没有库的情况下在 Coordinator 布局中添加全屏拉动刷新。 您可以在 AppBar 未完全展开时禁用滑动刷新布局,并在 AppBar 完全展开时启用它。 vAppBar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { _, verticalOffset -> vSwipeRefresh.isEnabled = verticalOffset == 0 }) 我添加了 swipetorefresh 顶层,如上面的答案。我用下面的代码解决了向上滚动的问题。感谢穆罕默德雷扎:) recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener(){ @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop(); swipeRefreshLayout.setEnabled(topRowVerticalPosition >= 0); } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } }); 尝试将 SwipeRefreshLayout 设置为根父级,如下所示: <?xml version="1.0" encoding="utf-8"?> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout 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"> <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="128dp" /> </com.google.android.material.appbar.AppBarLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> 我也面临着同样的问题 然后我用编程解决了它 binding.appbar.addOnOffsetChangedListener { _, verticalOffset -> binding.swipeRefreshLayout.isEnabled = verticalOffset == 0 } 要将 SwipeRefreshLayout 与 CoordinatorLayout 和 FloatingActionButton (FAB) 一起使用,您可以按照以下步骤操作: 更新布局 XML: 打开要添加组件的 XML 布局文件。 包括 <androidx.swiperefreshlayout.widget.SwipeRefreshLayout> 元素作为父布局。 在 SwipeRefreshLayout 内部,包含 CoordinatorLayout 和其他视图。 这是一个例子:<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.MaterialToolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light" app:title="My Toolbar" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" app:layout_anchor="@id/toolbar" app:layout_anchorGravity="bottom" /> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab_scroll_top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_arrow_upward" app:layout_anchor="@id/recycler_view" app:layout_anchorGravity="bottom|end" app:layout_margin="@dimen/fab_margin" /> </CoordinatorLayout> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
我的布局看起来有点像这样: ...
带有 RecyclerView 和折叠标题的 CoordinatorLayout
我的布局如下: (工具栏, 标题视图、文本视图、RecyclerView) 当我滚动 recyclerview 的项目时,我需要折叠标题。 这样视图“选择项目”和
在 CoordinatorLayout 中的工具栏下方添加视图
我有以下布局: 我有以下布局: <android.support.design.widget.CoordinatorLayout android:id="@+id/main_content" 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"> <android.support.design.widget.AppBarLayout android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.design.widget.CoordinatorLayout> 我将 Fragment 添加到 FrameLayout 中,替换它们。我的 Fragment 之一是一个列表,其布局如下: <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 我的问题是工具栏绘制在列表上。我尝试通过将 CoordinatorLayout 的内容包装到 LinearLayout 中来解决这个问题,这解决了透支问题,但这样应用程序栏滚动行为就不再起作用。 非常感谢任何帮助! 获取属性 app:layout_behavior="@string/appbar_scrolling_view_behavior" 从 RecyclerView 上取下并将其放在您要在 FrameLayout 下显示的 Toolbar 上。 我发现滚动视图行为所做的一件重要的事情是将组件布局在工具栏下方。因为 FrameLayout 有一个会滚动的后代 (RecyclerView),所以 CoordinatorLayout 将获取用于移动 Toolbar 的滚动事件。 另一件事要注意:布局行为将导致 FrameLayout 高度调整大小 就好像 Toolbar 已经滚动,并且随着 Toolbar 完全显示,整个视图被简单地向下推,因此视图的底部低于 CoordinatorLayout 的底部。 这对我来说是一个惊喜。我期望随着工具栏上下滚动,视图会动态调整大小。因此,如果您的视图底部有一个带有固定组件的滚动组件,则在完全滚动 Toolbar 之前,您将看不到该底部组件。 因此,当我想在 UI 底部锚定一个按钮时,我通过将按钮放在 CoordinatorLayout (android:layout_gravity="bottom") 的底部并在视图中添加等于按钮高度的底部边距来解决此问题工具栏下方。 我设法通过添加来解决这个问题: android:layout_marginTop="?android:attr/actionBarSize" 像这样到FrameLayout: <FrameLayout android:id="@+id/content" android:layout_marginTop="?android:attr/actionBarSize" android:layout_width="match_parent" android:layout_height="match_parent" /> 使用折叠顶部工具栏或使用您自己选择的 ScrollFlags 我们可以这样做:从Material Design摆脱FrameLayout <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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"> <androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_width="match_parent" android:layout_height="match_parent" app:contentScrim="?attr/colorPrimary" app:expandedTitleGravity="top" app:layout_scrollFlags="scroll|enterAlways"> <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin"> <ImageView android:id="@+id/ic_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_arrow_back" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="back" android:textSize="16sp" android:textStyle="bold" /> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:id="@+id/post_details_recycler" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </androidx.coordinatorlayout.widget.CoordinatorLayout> 从 Android studio 3.4 开始,您需要将此行放入包含 RecyclerView 的布局中。 app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" 看一下。尝试给予与工具栏相同大小的边距 <?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:fitsSystemWindows="true" app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" tools:context=".MainActivity"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true"> <com.google.android.material.appbar.MaterialToolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" /> </com.google.android.material.appbar.AppBarLayout> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/constraintLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="?attr/actionBarSize"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" app:layout_anchor="@+id/constraintLayout" app:layout_anchorGravity="center" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>
(这个错误发生在一个大项目中,所以我做了一个小项目以便于演示) 我已经被这个问题困扰了一段时间,但我在任何地方都找不到答案 ~布局 我...
我如何实现以下布局设计,在向上滚动时我只需使用 searchview 获得视图: 1 ---- 2------向上滚动: 我尝试过将视图放在布局中的某些位置,但是
CoordinatorLayout + AppBarLayout + NavigationDrawer
将 CoordinatorLayout 与 AppBarLayout 和 NavigationDrawer 组合时遇到布局问题。 问题是,NavigationDrawer 及其内容隐藏在工具栏后面。 ...
包裹在 CoordinatorLayout 内的 RecyclerView 在键盘打开时未调整大小
活动布局xml: 活动布局xml: <?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" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:layout_collapseMode="parallax"> <ImageView android:layout_width="match_parent" android:layout_height="250dp" android:scaleType="centerCrop" android:src="@drawable/hospital_logo" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="******* ************* ********** ************" android:textSize="18sp" android:textColor="@android:color/black" android:textStyle="bold"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="***************************" android:textSize="18sp" android:textColor="@android:color/black" android:textStyle="bold"/> </LinearLayout> </FrameLayout> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> 这里我将 CoordinatorLayout 与 CollapsingToolbarBar 和 ViewPager 一起使用。 我在 ViewPager 中添加了两个带有布局 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="match_parent" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" /> </LinearLayout> recycler_view 的单元格包含 EditText。当我选择 EditText 时,软键盘打开,但 EditText 隐藏在键盘后面。 我已在活动中添加了以下标志: android:windowSoftInputMode="adjustResize" 我正在使用 23.1.1 appcompat 版本的 RecyclerView。 当我用 CoordinatorLayout 替换 LinearLayout 时,RecyclerView 正在调整大小以正确显示最后一个元素。所以我认为这是协调器布局的问题。 我遇到了以下问题https://code.google.com/p/android/issues/detail?id=176406和https://code.google.com/p/android/issues/detail?id =176187 但这与这个错误无关。让我知道我是否可以应用某种路径来解决这个问题。 等待回复。谢谢。 如果需要更多详细信息,请告诉我。 有一个非常相似的问题,并且能够通过使用 android:windowSoftInputMode="adjustPan" 来修复它 我遇到了类似的问题coordinatorLayout。但是,将 fitsSystemWindows 设置为 false 解决了问题。看来罪魁祸首是coordinatorLayout。我通过将整个布局(包括 AppBarLayout)封装在 constraintLayout 中解决了这个问题。 <androidx.coordinatorlayout.widget.CoordinatorLayout> <androidx.constraintlayout.widget.ConstraintLayout <com.google.android.material.appbar.AppBarLayout </com.google.android.material.appbar.AppBarLayout //content here </androidx.constraintlayout.widget.ConstraintLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout> 我知道回复这个帖子来得很晚,但也许对其他人有帮助。 :)
我的布局包含三个视图:视图 A、视图 B 和一个 RecyclerView。视图 A 在上面,视图 B 在视图 A 下面。然后,RecyclerView 在视图 B 下面。我想实现以下行为:当
我有一个折叠的工具栏布局,它有两个问题: 1)它是静态的,不会崩溃,我找不到原因 2) recyclerview 中的最后一行显示一半
如何仅在滚动对屏幕来说太大的 RecyclerView 时才使用 MotionLayout 隐藏/显示视图?
我有一个用于搜索的片段。它的布局在顶部有一个“搜索栏”,然后是我显示结果的 TextView 和 RecyclerView。我想隐藏/
让无尽的 RecyclerView 内容包裹在 CoordinatorLayout 中
我想显示一个工具栏、详细布局和带有分页/无限列表的回收器视图。我最终使用 CoordinatorLayout 来包含详细布局和 RecyclerView,以及 ReyclerView
Android:RecyclerView 不在 CoordinatorLayout 内滚动
我有自定义的 LinearLayout,可以根据它包含的内容将高度设置为最大或最小。但是如果这个 LinearLayout 里面有 RecyclerView,当我调用
Android - 当 Fab 设置了 layout_behavior 时,无法使 FloatingActionButton 在显示 snackbar 时向上移动
在我的应用程序中,我有一个屏幕,在协调器布局中有一个晶圆厂。当显示小吃店时,工厂会随着小吃店的出现而向上移动(这是我所期望的)。 然而,在另一个屏幕上,我的 ...