所以我有一个活动和两个片段。
修改
因此有两种方式显示片段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>
已在样式中设置。我不确定两个片段工具栏都使用相同的样式