1. 程式人生 > >android中使用toolbar

android中使用toolbar

itemid undle cnblogs target getitem protected edi prot make

系統默認使用的是ActionBar,就是界面中的標題欄,但是由於ActionBar設計的原因,被限定只能位於活動的頂部,從而不能實現Material Design效果,所以官方建議使用Toolbar替換掉ActionBar

下面來看一下,如果使用Toolbar

1、首先先去掉默認的ActionBar,修改styles.xml,這個styles.xml是項目自帶的,位於src/main/res/values目錄下,註意看紅色內容為我添加的內容:

<resources>

    <!-- Base application theme. -->
    <
style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent"
>@color/colorAccent</item> </style> <style name="AppTheme2" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
</resources>

AppTheme風格是系統默認的,也就是帶ActionBar的

AppTheme2風格是我添加的,是不帶ActionBar的,區別就是把parent屬性修改為Theme.AppCompat.Light.NoActionBar

當然如果整個項目都不需要ActionBar,直接修改默認的AppTheme風格就可以了

修改AndroidManifest.xml文件,這裏我截了圖,沒有粘代碼:

技術分享圖片

如果希望整個項目都使用AppTheme2風格,直接按我截圖的方式修改即可,如果只是部分Activity,可以專門為指定Activity指定android:theme屬性

2、在Activity活動上添加Toolbar

技術分享圖片

添加好toolbar控件,指定好id,然後需要在java代碼中註冊一下:

在onCreate方法中添加如下代碼:

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

如果需要不顯示標題,並且添加返回按鈕,修改上面的代碼:

   @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==android.R.id.home) {
            finish();
        } 
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main36);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

            }
        });
    }

上面的代碼重寫了onOptionsItemSelected方法,用於響應返回按鈕事件

3、為Toolbar添加操作按鈕

這個添加按鈕其實就是創建 option menu,這個我在之前的文章有講:Android中創建option menu

這裏我再創建一個,在src/main/res/menu目錄下創建menu資源文件menu1.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/editItem"
        android:icon="@android:drawable/ic_menu_edit"
        android:title="編輯"
        app:showAsAction="always" />
    <item
        android:id="@+id/deleteItem"
        android:icon="@android:drawable/ic_menu_delete"
        android:title="刪除"
        app:showAsAction="always" />
    <item
        android:id="@+id/helpItem"
        android:icon="@android:drawable/ic_menu_help"
        android:title="幫助"
        app:showAsAction="always" />
</menu>

註意這個app:showAsAction屬性,設成always是指顯示在標題欄中,設為ifRoom是指空間夠就顯示在標題欄中,設為never是顯示在菜單欄中

然後在java代碼中註冊這個菜單,並且響應對應按鈕事件,最終代碼如下:

public class Main36Activity extends AppCompatActivity {

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu4,menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==android.R.id.home) {
            finish();
        } else if(item.getItemId()==R.id.editItem) {
            Toast.makeText(Main36Activity.this, "編輯操作", Toast.LENGTH_SHORT).show();
        } else if(item.getItemId()==R.id.deleteItem) {
            Toast.makeText(Main36Activity.this, "刪除操作", Toast.LENGTH_SHORT).show();
        } else if(item.getItemId()==R.id.helpItem) {
            Toast.makeText(Main36Activity.this, "幫助操作", Toast.LENGTH_SHORT).show();
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main36);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    }
}

展示效果:

技術分享圖片

android中使用toolbar