在我的应用中,我有一个NavigationDrawer菜单,必须在我的所有应用页面中显示,所以我必须使用片段。现在,我创建一个导航抽屉项目模板,这是我的布局: 的 activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:layoutDirection="rtl"
tools:openDrawer="right">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
,这是我的app_bar_main.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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.techers.dayan.dayan.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
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" />
</android.support.design.widget.AppBarLayout>
<fragment
android:id="@+id/frgContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.techers.dayan.dayan.UIfragment.MainFragment"
tools:layout="@layout/fragment_main"/>
</android.support.design.widget.CoordinatorLayout>
这是我的片段视图xml文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.techers.dayan.dayan.UIfragment.MainFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="587dp"
android:layout_marginRight="8dp"
android:orientation="vertical">
<com.daimajia.slider.library.SliderLayout
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="200dp"/>
<EditText
android:id="@+id/txtSearch"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:ems="10"
android:gravity="right"
android:hint="جستجو"
android:inputType="text"
android:maxHeight="30dp"
android:minHeight="30dp"
android:paddingRight="7dp"
tools:layout_width="match_parent"
tools:minHeight="30dp"
tools:textAlignment="gravity" />
<GridView
android:id="@+id/gridProduct"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:verticalSpacing="10dp" />
</LinearLayout>
</FrameLayout>
如您所见,我的片段覆盖了我的appBarLayout。我该如何解决这个问题?
答案 0 :(得分:0)
你应该在你的片段xml声明中添加这行代码app:layout_behavior="@string/appbar_scrolling_view_behavior"
,它应该将它直接放在appbar下面;您可以在 CoordinatorLayout和应用栏部分下阅读有关here的更多信息
<fragment
android:id="@+id/frgContent"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:name="com.techers.dayan.dayan.UIfragment.MainFragment"
tools:layout="@layout/fragment_main"/>
上面的代码可以解决问题
编辑:更改了代码示例,现在它应该可以工作(在xml AS预览本地测试)