Fragment中修改Toolbar

有一个需求,主界面是一个Activity,里面是ViewPager+Fragment。当滑到不同页时,上面的 Toolbar需要跟着改变。
本篇主要介绍,如何让Fragment修改在Activity中的Toolbar,以及让Toolbar的menu上的图标显示出来。
(1)让Fragment支持,并修改Toolbar。

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        //这里设置另外的menu
        menu.clear();
        inflater.inflate(R.menu.notes, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

(2)让Toolbar的menu显示图标。
让Toolbar显示menu图标,只需要改一下onCreateOptionsMenu()方法。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        //这里设置另外的menu
        menu.clear();
        inflater.inflate(R.menu.notes, menu);

        //通过反射让menu的图标可见
        if (menu != null) {
            if (menu.getClass() == MenuBuilder.class) {
                try {
                    Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);
                } catch (Exception e) {

                }
            }
        }

        //这一行不能忘,否则看不到图标
        //拿到ActionBar后,可以进行设置
        ((AppCompatActivity) getActivity()).getSupportActionBar();
        super.onCreateOptionsMenu(menu, inflater);
    }

如果想让menu菜单,在Toolbar的下方弹出,可以给Toolbar设置Style。

<?xml version="1.0" encoding="utf-8"?>
    <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/ToolbarPopupTheme"   
      app:theme="@style/Widget.AppCompat.Light.ActionBar"/>
<style name="ToolbarPopupTheme" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
    <item name="android:colorBackground">#90000000</item>  <!-- 设置背景颜色-->
    <item name="overlapAnchor">false</item>  <!--设置不覆盖锚点-->
</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,108评论 2 59
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,366评论 25 709
  • 2017年05月30 最后的懒加载写的不好,推荐请叫我大苏同学写的Fragment懒加载博客,【Android】再...
    英勇青铜5阅读 13,497评论 56 189
  • 大家五一快乐*^_^*
    川枝阅读 209评论 0 1
  • 在古代,帝王最喜欢的就是国泰民安,现在也是如此。不管是在我们所认知世界里的任何角落,人们都希望稳定,有了稳定...
    yzyvl阅读 261评论 0 2