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) {
        //這里設(shè)置另外的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) {
        //這里設(shè)置另外的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后,可以進行設(shè)置
        ((AppCompatActivity) getActivity()).getSupportActionBar();
        super.onCreateOptionsMenu(menu, inflater);
    }

如果想讓menu菜單,在Toolbar的下方彈出,可以給Toolbar設(shè)置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>  <!-- 設(shè)置背景顏色-->
    <item name="overlapAnchor">false</item>  <!--設(shè)置不覆蓋錨點-->
</style>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容