您可以从Fragment 轻松获取Toolbar,然后在Fragment 中修改或更改Toolbar 的某些属性。
要从您的Activity 获取Toolbar,您可以考虑使用它。
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
现在您需要在onResume 函数中对Toolbar 进行更改,然后每次从onStop 函数中的Fragment 返回时撤消更改。否则,当从导航抽屉切换到其他Fragment 时,在Fragment 中所做的更改也会继续到其他片段。
但在您的情况下,我建议每个Fragment 都应该有自己的Toolbar,这样它就不会相互冲突,并且可以根据需要进行修改。是的,从您的Activity 中删除Toolbar。
所以像这样在Fragment 的布局中添加Toolbar。
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimaryDark"/>
然后在Fragment找到它
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
// Modify your Toolbar here.
// ...
// For example.
// toolbar.setBackground(R.color.red);
// Create home button
AppCompatActivity activity = (AppCompatActivity) getActivity();
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
并覆盖onOptionsItemSelected 函数。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
getActivity().onBackPressed();
}
return super.onOptionsItemSelected(item);
}