刚才介绍了关于底部菜单栏的实现方法,接下来介绍下顶部的实现。
我是将麻烦的内容都封装成类了,大家使用的时候直接继承,里面的原理如果想知道的话就看源码啦~~好啦,不多说,上菜!!
首先你需要引入两个类,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 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setView(R.layout.activity_main);
SetTitle("成功啦!!");
setTitleBar(R.drawable.title_back, "", R.drawable.title_home, "");
}
@Override
public 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;
}
@Override
protected void HandleTitleBarEvent(int buttonId) {
// TODO Auto-generated method stub
}
}
效果图如下:
等等,貌似还没添加按钮点击事件呢吧?还记得刚才重写了一个HandleTitleBarEvent方法吗?参数buttonId=0则代表左边按钮,buttonId=1代表右边按钮,所以可以这样来定义事件
@Override
protected void HandleTitleBarEvent(int buttonId) {
// TODO Auto-generated method stub
switch(buttonId){
case 0:
showToast("点击了左边按钮");
case 1:
showToast("点击了右边按钮");
}
}
最后的效果图:
最后呢,奉献源码:源代码下载