状态栏后面的工具栏位于一个片段中而不是另一个片段中

时间:2017-11-10 13:40:40

标签: android android-fragments android-toolbar android-coordinatorlayout

所以我有一个活动和两个片段。

我正在添加片段1,工具栏按预期显示enter image description here

但是,fragment2中的工具栏显示在工具栏后面。enter image description here

修改

因此有两种方式显示片段2,第一种是通过在片段1中单击显示,另一种是在主机活动启动时显示片段2.无论如何,每次调用相同的方法。但是,当直接从活动启动Fragment2时,工具栏会按预期显示,但如果从Fragment1启动,则片段2工具栏显示如下。

所以我认为问题是我不允许将工具栏切换为supportActionBar?与在片段1中一样,我将片段工具栏设置为操作栏,并将片段2工具栏设置为相同。有没有办法做到这一点?

所以我如何设置我的活动布局如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<FrameLayout
    android:id="@+id/location_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

<FrameLayout
    android:id="@+id/area_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

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

我正在使用两种帧布局,因为我希望片段1在从片段2返回时仍然显示。

fragment1的布局如下:

<?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:daft="http://schemas.android.com/tools"
    android:id="@+id/rootLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/search_results_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/test_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:theme="@style/HomeScreenToolbarTheme"
            my:titleTextAppearance="@style/DaftTheme.ActionBarStyle.TitleTextStyle"
            app:layout_scrollFlags="scroll|enterAlways">

        </android.support.v7.widget.Toolbar>

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:id="@android:id/empty"
            android:visibility="gone"
            style="@style/daft_progressbar_text"
            android:padding="@dimen/activity_horizontal_margin"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/no_results" >
        </TextView>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/results_a_recyclerview"
            android:clipToPadding="false"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v7.widget.RecyclerView>
    </RelativeLayout>

    <ViewStub android:id="@+id/results_a__snackbar"
        android:inflatedId="@+id/results_a__snackbar_layout"
        android:layout="@layout/my_snack_bar"
        android:layout_gravity="bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"/>
</android.support.design.widget.CoordinatorLayout>

fragment2的布局如下:

<?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:daft="http://schemas.android.com/tools"
    android:id="@+id/rootLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/results_b_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/areas_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:theme="@style/HomeScreenToolbarTheme"
            my:titleTextAppearance="@style/DaftTheme.ActionBarStyle.TitleTextStyle"
            app:layout_scrollFlags="scroll|enterAlways">

        </android.support.v7.widget.Toolbar>

    </android.support.design.widget.AppBarLayout>
    <RelativeLayout
        android:layout_marginBottom="@dimen/button_height"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:id="@android:id/empty"
            android:visibility="gone"
            style="@style/daft_progressbar_text"
            android:padding="@dimen/activity_horizontal_margin"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/no_results"
            android:background="@color/white">
        </TextView>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/results_b_recyclerview"
            android:background="@color/white"
            android:clipToPadding="false"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </android.support.v7.widget.RecyclerView>
    </RelativeLayout>

    <Button
        android:id="@+id/clear_button"
        style="@style/reset_button_standard"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_search_reset_button"
        android:layout_gravity="bottom"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/confirm_button"
        />

    <Button
        android:id="@+id/confirm_button"
        style="@style/confirm_button_standard"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/confirm"
        android:layout_gravity="bottom"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"/>
</android.support.design.widget.CoordinatorLayout>

最后是我用于工具栏和活动的样式

   <style name="HomeScreenTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:colorAccent">@color/primary_blue</item>
        <item name="colorAccent">@color/primary_blue</item>
        <item name="colorPrimary">@color/primary_blue</item>
        <item name="colorPrimaryDark">@color/primary_blue_dark</item>
        <item name="android:windowTranslucentStatus">true</item>
    </style>

    <style name="HomeScreenToolbarTheme" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:fitsSystemWindows">true</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    </style>

两个工具栏都被设置为片段的onCreateView中的操作栏,例如

toolbar1 = view.findViewById(R.id.test_toolbar);

        AppCompatActivity activity = (AppCompatActivity) getActivity();
        activity.setSupportActionBar(cityCountyToolbar);

        ActionBar actionBar = activity.getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setTitle("Fragment 1");

我对这里发生的事情感到困惑,两个片段都应用相同的工具栏样式,这两个片段都是具有该样式的一个活动的一部分。除片段2中的一些添加外,片段布局几乎相同。

顺便说一句,工具栏按照预期的行为滚动循环器视图。

<item name="android:windowTranslucentStatus">true</item>已在样式中设置。我不确定两个片段工具栏都使用相同的样式

0 个答案:

没有答案