剛才介紹了關於底部功能表列的實現方法,接下來介紹下頂部的實現。
我是將麻煩的內容都封裝成類了,大家使用的時候直接繼承,裡面的原理如果想知道的話就看源碼啦~~好啦,不多說,上菜!!
首先你需要引入兩個類,BaseLayout與BaseTitleActivity,這也是我主要想給大家的兩個類,當需要有頂部功能表列的時候,你的Activity就需要繼承這BaseTitleActivity這個類,然後會提示你重寫BaseTitleActivity裡面的HandleTitleBarEvent()方法,這是控制上面功能表列的按鈕點擊事件的,BaseLayout是繼承RelativeLayout的,所以BaseLayout需要引入它的布局檔案,我將其命名為titlebar.xml,只需要將其拷貝到layout檔案夾下就可以了,其餘的都不需要管啦~
這時候,你除了建立Activity讓其繼承BaseTitleActivity之外是不要些任何代碼的,寫代碼的時候從現在開始,找到你的繼承BaseTitleActivity的那個Activity,我這裡是MainActivity,將其setContentView函數改為setView,對的,沒錯,因為我在BaseTitleActivity將其改為setView了,代碼如下:
這個時候,只需要調用兩個函數,就可以設定你喜歡的頂部功能表列啦,setTitle()很容易理解,它是設定頂部顯示的文字的,還有
setTitleBar(int, , int, );兩個int參數代表你要傳進來的圖片id,可以通過R.drawable.**來擷取你在drawable檔案夾下的圖片。代碼如下:
package com.example.topmenu;import com.sniper.use.BaseTitleActivity;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends BaseTitleActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setView(R.layout.activity_main);SetTitle(成功啦!!);setTitleBar(R.drawable.title_back, , R.drawable.title_home, );}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overrideprotected void HandleTitleBarEvent(int buttonId) {// TODO Auto-generated method stub}}
如下:
等等,貌似還沒添加按鈕點擊事件呢吧?還記得剛才重寫了一個HandleTitleBarEvent方法嗎?參數buttonId=0則代表左邊按鈕,buttonId=1代表右邊按鈕,所以可以這樣來定義事件
@Overrideprotected void HandleTitleBarEvent(int buttonId) {// TODO Auto-generated method stubswitch(buttonId){case 0:showToast(點擊了左邊按鈕);case 1:showToast(點擊了右邊按鈕);}}
最後的: