ToolBar和Menu的聯合使用及問題

在佈局中寫ToolBar屬性的時候能夠設置logo、title、titleTextColor、subTitle等(logo默認顯示在ToolBar的左側,title和subtitle顯示在logo右側,若是不設置subtitle,title會默認豎直居中)android

全部ToolBar的功能要在前面把android改成app不然無效app

第一步:佈局

由於系統默認會給整個佈局頂部添加一個ActionBar因此要讓咱們本身定義的ToolBar顯示的話要自定義一個style讓Action顯示不出來,且咱們定義的樣式style最好繼承系統默認的樣式(AppTheme),自定義的style代碼以下:ui

<style name="AppTheme.NoActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

第二部:this

要在清單文件中給想要放置ToolBar的Activity添加一個主題,即在activity的「>」內部加入一行代碼spa

<activity android:name=".MainActivity"
    android:theme="@style/AppTheme.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

紅色部分即爲咱們爲ToolBar自定義的樣式xml

第三部:繼承

在Activity的代碼中要記得實例化ToolBar並寫入一段代碼,ToolBar便可實現ip

toolbar= (Toolbar) findViewById(R.id.toolbar_main);
setSupportActionBar(toolbar);

第四部:get

如何在ToolBar的右側添加按鈕的方法

            一、ToolBar內部能夠嵌套其它控件,能夠理解爲ToolBar自己爲一個佈局,裏面能夠添加TextView、Button之類的控件,可是用這種方法我沒有實現讓按鈕在ToolBar右側依次排開,也沒找到好的辦法實現

            二、在Activity的代碼中實現Menu,Menu便會從ToolBar右側依次排開,首先要在res文件夾下新建一個menu文件夾,再在menu文件夾下選擇新建menufile代碼以下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_setting" android:icon="@mipmap/ic_audit"
        android:actionLayout="@layout/action_setting"
        android:title="評審" app:showAsAction="always|withText"></item>
    <item android:id="@+id/action_setting1" android:icon="@mipmap/ic_add_article" android:title="編寫"
        android:actionLayout="@layout/action_setting1"
        app:showAsAction="always|withText"/>
</menu>

在上面這段代碼中一個item即爲一個menu,這裏我新建了兩個menu,必需要給menu設置id和title和showAsAction,咱們能夠給每個menu設置一個新的佈局,例如第一個item的actionLayout即爲我給這個menu設置的佈局     

            在Activity中重寫onCreateOpionMenu方法,其中的R.menu.menu_main即爲咱們新建的menufile

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main,menu);
    return super.onCreateOptionsMenu(menu);
}

            爲了實現menu的點擊時間咱們要在Activity中重寫onOptionsItemSelected方法,代碼以下:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_setting1:
            Toast.makeText(MainActivity.this, "點擊了Home", Toast.LENGTH_SHORT).show();
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
           builder.setMessage("確認退出嗎?");
           builder.setTitle("提示");
            builder.create().show();
            break;
        case R.id.action_setting:
            Toast.makeText(MainActivity.this, "點擊了Settings菜單", Toast.LENGTH_SHORT).show();
            break;
    }
    return super.onOptionsItemSelected(item);
}

            上面的代碼中的R.id.action_setting即爲咱們新建的menu文件中第二個item的id,這裏我設置了點擊menu的時候生成一個對話話框。設置完成後這兩個menu即會在ToolBar的右側依次顯示,可是爲何menu會自動顯示在ToolBar上不知道誰能告訴我

相關文章
相關標籤/搜索