Toolbar使用

簡介

Toolbar是Android 5.0中引入的一個新控件。好比是ActionBar升級版,但是相比ActionBar,Toolbar變得更加自由,可以放到任何位置。

使用

由于我們平常開發(fā)app要兼容5.0以下的手機,所以使用Toolbar必須引用appcompat-v7兼容包,Android studio新建的工程默認是引用了appcompat-v7。

1.布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
        android:id="@+id/main_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"/>
</RelativeLayout>

2.style樣式設置

使用Toolbar替代ActionBar,使用的主題必須是沒有ActionBar的,否則會造成沖突。因此修改style.xml中主題樣式,繼承Theme.AppCompat.NoActionBar

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@android:color/white</item>
</style>

3.Activity中使用

(1) 將Toolbar當作ActionBar來使用。

這種情況一般發(fā)生在你想利用ActionBar現(xiàn)有的一些功能(比如能夠顯示菜單中的操作項,響應菜單點擊事件,使用ActionBarDrawerToggle等),但是又想獲得比actionbar更多的控制權限。

那么當前Activity需要繼承AppCompatActivity,調用setSupportActionBar方法傳入Toolbar的實例對象。

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.main_toolbar)
    Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        setSupportActionBar(toolbar);
    }
}
(2) 將Toolbar當作一個獨立的控件來使用。

這種情況當前Activity可以不繼承AppCompatActivity。

public class MainActivity extends Activity {
    @BindView(R.id.main_toolbar)
    Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        toolbar.setTitle("Example");
    }
}

以上步驟完成后,Toolbar就添加到了頁面中。

Toolbar效果

Toolbar配置

Toolbar在ActionBar原有的設計基礎上又將標題欄分為了多個區(qū)域,如下從Google找到的一張示例圖所示:

配置

大抵來說,配置常用的幾個元素就如圖中所示:

(1) setNavigationIcon

設置導航按鈕,比如作為返回按鈕。
在Toolbar當作ActionBar來使用的情況下:
注意setNavigationIcon需要放在 setSupportActionBar之后才會生效。

可以使用ActionBar原有方法來添加一個系統(tǒng)的返回按鈕。

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

可以通過setNavigationOnClickListener設置其點擊事件。

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Toast.makeText(MainActivity.this, "toolbar", Toast.LENGTH_SHORT).show();
    }
});
返回按鈕
(2) setLogo

設置圖標(圖中寫錯了,應該是setLogo)

(3) setTitle

設置主標題。
在Toolbar當作ActionBar來使用的情況下:
setDisplayShowTitleEnabled需要設置為false,setTitle才能有效。

getSupportActionBar().setDisplayShowTitleEnabled(false);
(4) setSubtitle

設置副標題

(5) setOnMenuItemClickListener

設置菜單的點擊事件,如果Toolbar當作ActionBar來使用的話,還可以直接在onOptionsItemSelected(MenuItem item)中設置。

測試代碼如下:
toolbar.setNavigationIcon(R.mipmap.icon_back);
toolbar.setLogo(R.mipmap.ic_launcher);
toolbar.setTitle("Toolbar");
toolbar.setSubtitle("subtitle");
配置效果

總結

關于Toolbar的初步使用就這么多,在Toolbar當作ActionBar使用的情況下,能用ActionBar原有方法實現(xiàn)的功能盡量用其方法實現(xiàn),不能實現(xiàn)的再考慮使用Toolbar的方法,舉個例子,像菜單構建設置監(jiān)聽什么的,直接使用Activity提供的方法就好了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容