讀第一行代碼第12章-1.標題欄
阿新 • • 發佈:2018-06-14
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.標題欄