在应用清单中,将 元素设置为使用 appcompat 的其中一个 NoActionBar 主题。
- 使用原生的主题
<activity android:name=".MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
- 或者在需要自己先在 res/values/styles.xml 里增加一个 Theme
<style name="MyAppTheme" parent="Theme.AppCompat">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<activity android:name=".MainActivity"
android:theme="@style/MyAppTheme">
将Fragment加入Activity
Activity布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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.example.du.toolbarinfragment.MainActivity">
<FrameLayout
android:id="@+id/fg_main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
MainActivity文件
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment =fragmentManager.findFragmentById(R.id.fg_main_container);
if (fragment == null) {
fragment = new FragmentWithToolbar();
fragmentManager.beginTransaction()
.add(R.id.fg_main_container, fragment)
.commit();
}
}
}
向Fragment的布局添加一个 Toolbar。
xml文件
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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_height="?attr/actionBarSize"
android:layout_width="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
向Toolbar中添加操作按钮
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="编辑"
android:icon="@drawable/ic_edit_black_24dp"/>
<item android:title="购物车"
android:icon="@drawable/ic_add_shopping_cart_black_24dp"/>
</menu>
在Fragment中获取Toolbar
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
AppCompatActivity appCompatActivity= (AppCompatActivity) getActivity();
Toolbar toolbar= (Toolbar) appCompatActivity.findViewById(R.id.toolbar);
appCompatActivity.setSupportActionBar(toolbar);
super.onActivityCreated(savedInstanceState);
}
Fragment获取Toolbar获取menu
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.toolbar_menu_item,menu);
super.onCreateOptionsMenu(menu, inflater);
}
这时候Toolbar并没有显示,需要在onActivityCreated加一个方法
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
AppCompatActivity appCompatActivity= (AppCompatActivity) getActivity();
Toolbar toolbar= (Toolbar) appCompatActivity.findViewById(R.id.toolbar);
appCompatActivity.setSupportActionBar(toolbar);
super.onActivityCreated(savedInstanceState);
}
这时候menu就显示在Toolbar上