我有一个简单的CoordinatorLayout
,AppBarLayout
和FrameLayout
,FrameLayout
内容显示在AppBarLayout
上,无论layout_behavior属性如何FrameLayout
。我尝试在其他地方添加该属性(比如在RecyclerView
上),但这是相同的行为。
这是一张显示我的意思的图片。
活动布局:
<?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: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="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@android:id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</android.support.design.widget.CoordinatorLayout>
片段布局:
<android.support.v7.widget.RecyclerView
android:id="@+id/checkins_recycler_view"
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:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
我如何在我的活动中添加我的片段:
final UserCheckinsFragment fragment = new UserCheckinsFragment();
final Bundle arguments = new Bundle();
UserCheckinsFragment.getArguments(arguments, items);
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction().add(android.R.id.content, fragment,
UserCheckinsFragment.class.getName()).commit();
答案 0 :(得分:4)
xml中的FrameLayout
ID(@android:id/content
)和android.R.id.content
事务中的容器(Fragment
)指的是系统 root布局 ,然后将它放在所有屏幕上。
要解决此问题,请使用不带android
前缀的<。<}前缀。
答案 1 :(得分:3)
将app:layout_behavior="@string/appbar_scrolling_view_behavior"
添加到RecyclerView
,它会起作用。 app:layout_behavior
应该是Fragment
答案 2 :(得分:2)
https://stackoverflow.com/a/24713989/4409113
在
AppCompat
中,ActionBar
没有原生支持。android.R.id.content
是整个应用屏幕的容器 。这意味着 - 包括ActionBar
,因为ActionBar
在那里被模拟并添加为标准视图层次结构。
您可能想要使用(在Layout
中):
android:id="@+id/content"
和(在Java
中):
getSupportFragmentManager().beginTransaction().add(R.id.content, fragment,
UserCheckinsFragment.class.getName()).commit();
然后,它应该工作。
答案 3 :(得分:0)
嗨,我有同样的问题,我通过将“app:layout_behavior =”@ string / appbar_scrolling_view_behavior“”添加到我的布局父级中来修复它,这是线性布局并包含RecylerView布局,现在它可以正常工作但我有一个页面布局中的按钮消失的其他问题