1. 程式人生 > >讀第一行代碼第12章-1.標題欄

讀第一行代碼第12章-1.標題欄

toolbar rri 樂趣 soft class 創建 end length switch

今天學校停電,沒意思,特來更新兩篇文章,讀了第一行代碼之後,覺得內容寫的非常不錯,於是照著書把代碼敲了一遍,今天敲的是Toolbar。
Toolbar就是標題欄,只不過之前使用的標題欄叫ActionBar,由於ActionBar有很多的局限性,所以改用Toolbar,可以在標題欄中增加許多樂趣。

第一步去掉標題欄:

技術分享圖片

第二步將v7庫中的Toolbar添加到布局中:

技術分享圖片

這裏面Toolbar的高度指定為與原標題欄的高度相同,顏色什麽的都在下圖中:

技術分享圖片

接下來在MainActivity中添加下面的兩行代碼:

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

添加完之後就會發現,又報錯了,這是為什麽呢?

技術分享圖片

重新查看布局文件:

技術分享圖片

大致能猜出原因了吧,因為我們使用的是appcompat-v7庫中的Toolbar,所以要刪除原的包名,重新導入:

技術分享圖片

錯誤消失,現在我們已經有了一個原來一模一樣的標題欄了,只不過他的名字由ActionBar變成了Toolbar,接下來我們在標題欄中添加一些按鈕。首先導入五張圖片作為按鈕的圖標,將他們導入至drawable-xxhdpi目錄下:

技術分享圖片

然後右鍵res目錄→NEW→Directory,創建一個menu文件夾:

技術分享圖片

並右鍵menu文件夾→NEW→Menu resourse file,創建一個toolbar.xml文件:

技術分享圖片

接下來在文件中添加如下代碼:

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

<item
    android:id="@+id/Share"
    android:title="Share"
    android:icon="@drawable/share"
    app:showAsAction="always"/>
<item
    android:id="@+id/Upload"
    android:title="Upload"
    android:icon="@drawable/upload"
    app:showAsAction="ifRoom"/>
<item
    android:id="@+id/Add"
    android:title="Add"
    android:icon="@drawable/add"
    app:showAsAction="never"/>
<item
    android:id="@+id/Delete"
    android:title="Delete"
    android:icon="@drawable/delete"
    app:showAsAction="never"/>
<item
    android:id="@+id/Setting"
    android:title="Setting"
    android:icon="@drawable/setting"
    app:showAsAction="never"/>
</menu>  

其中我們用

package com.project.software.toolbar;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.Share:
            Toast.makeText(this,"You click Share!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Upload:
            Toast.makeText(this,"You click Upload!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Add:
            Toast.makeText(this,"You click Add!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Delete:
            Toast.makeText(this,"You click Delete!",Toast.LENGTH_SHORT).show();
            break;
        case R.id.Setting:
            Toast.makeText(this,"You click Setting!",Toast.LENGTH_SHORT).show();
            break;
        default:break;
    }
    return true;
}
}  

我們在onCreateOptionMenu()方法中加載了toolbar這個文件,然後通過onOptionItemSelected()方法處理各個按鈕的點擊事件,最終運行效果如下:

技術分享圖片

Over

讀第一行代碼第12章-1.標題欄