美文网首页
Fragment中修改Toolbar

Fragment中修改Toolbar

作者: deriklpw | 来源:发表于2018-11-21 23:08 被阅读0次

有一个需求,主界面是一个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>

相关文章

  • Fragment中修改Toolbar

    有一个需求,主界面是一个Activity,里面是ViewPager+Fragment。当滑到不同页时,上面的 To...

  • Fragment操作ToolBar

    Fragment中对ToolBar添加MenuItem,创建menu_change,Fragment中复写void...

  • 一个APP需要的东西

    activity fragment tab recyclerview viewpager toolbar 轮播 图...

  • Design之Toolbar的使用

    ToolBar封装在BaseActivity(包括菜单menu) Toolbar中修改menu菜单字体大小和颜色 ...

  • Activity、Fragment相互调用

    一、Activity控制Fragment或者修改Fragment的控件的值在Fragment中定义一个public...

  • 2018-05-23

    修改:View---->>ToolBar(勾选)

  • vue-quill-editor 初级到进阶

    初级 1.自定义toolBar 根据自己所需,修改toolbar属性值就OK;例如: 进阶-自定义toolbar ...

  • Android ToolBar小记

    通常我在页面的头部都想需要使用到ToolBar,往往在toolbar中设置字体不会居中,当然也可以通过修改属性设置...

  • 2018-09-09

    在eclipse中修改toolbar中的字体大小设置: 在eclipse的安装目录中:plugins\org.ec...

  • 8.《第一行代码》笔记三

    十二、Material Design1.Toolbar在values/styles.xml中修改主题,把Theme...

网友评论

      本文标题:Fragment中修改Toolbar

      本文链接:https://www.haomeiwen.com/subject/mtspfqtx.html