android中使用toolbar

摘要:
--Customizeyourthemehere.--˃@color/colorPrimary@color/colorPrimaryDark@color/colorAccent˂!

系统默认使用的是ActionBar,就是界面中的标题栏,但是由于ActionBar设计的原因,被限定只能位于活动的顶部,从而不能实现Material Design效果,所以官方建议使用Toolbar替换掉ActionBar

下面来看一下,如果使用Toolbar

1、首先先去掉默认的ActionBar,修改styles.xml,这个styles.xml是项目自带的,位于src/main/res/values目录下,注意看红色内容为我添加的内容:

<resources>
    <!--Base application theme. -->
    <style name="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar">
        <!--Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
<style name="AppTheme2" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

AppTheme风格是系统默认的,也就是带ActionBar的

AppTheme2风格是我添加的,是不带ActionBar的,区别就是把parent属性修改为Theme.AppCompat.Light.NoActionBar

当然如果整个项目都不需要ActionBar,直接修改默认的AppTheme风格就可以了

修改AndroidManifest.xml文件,这里我截了图,没有粘代码:

android中使用toolbar第1张

如果希望整个项目都使用AppTheme2风格,直接按我截图的方式修改即可,如果只是部分Activity,可以专门为指定Activity指定android:theme属性

2、在Activity活动上添加Toolbar

android中使用toolbar第2张

添加好toolbar控件,指定好id,然后需要在java代码中注册一下:

在onCreate方法中添加如下代码:

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

如果需要不显示标题,并且添加返回按钮,修改上面的代码:

@Override
    public booleanonOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==android.R.id.home) {
            finish();
        } 
        return super.onOptionsItemSelected(item);
    }
    @Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main36);
        Toolbar toolbar =findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
            }
        });
    }

上面的代码重写了onOptionsItemSelected方法,用于响应返回按钮事件

3、为Toolbar添加操作按钮

这个添加按钮其实就是创建 option menu,这个我在之前的文章有讲:Android中创建option menu

这里我再创建一个,在src/main/res/menu目录下创建menu资源文件menu1.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/editItem"
        android:icon="@android:drawable/ic_menu_edit"
        android:title="编辑"
        app:showAsAction="always" />
    <item
        android:id="@+id/deleteItem"
        android:icon="@android:drawable/ic_menu_delete"
        android:title="删除"
        app:showAsAction="always" />
    <item
        android:id="@+id/helpItem"
        android:icon="@android:drawable/ic_menu_help"
        android:title="帮助"
        app:showAsAction="always" />
</menu>

注意这个app:showAsAction属性,设成always是指显示在标题栏中,设为ifRoom是指空间够就显示在标题栏中,设为never是显示在菜单栏中

然后在java代码中注册这个菜单,并且响应对应按钮事件,最终代码如下:

public class Main36Activity extendsAppCompatActivity {
    @Override
    public booleanonCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu4,menu);
        return true;
    }
    @Override
    public booleanonOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==android.R.id.home) {
            finish();
        } else if(item.getItemId()==R.id.editItem) {
            Toast.makeText(Main36Activity.this, "编辑操作", Toast.LENGTH_SHORT).show();
        } else if(item.getItemId()==R.id.deleteItem) {
            Toast.makeText(Main36Activity.this, "删除操作", Toast.LENGTH_SHORT).show();
        } else if(item.getItemId()==R.id.helpItem) {
            Toast.makeText(Main36Activity.this, "帮助操作", Toast.LENGTH_SHORT).show();
        }
        return super.onOptionsItemSelected(item);
    }
    @Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main36);
        Toolbar toolbar =findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    }
}

展示效果:

android中使用toolbar第3张

免责声明:文章转载自《android中使用toolbar》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ActiveMQ集群搭建使用mkdocs撰写技术文档并免费部署上线下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

学习 MFC之 工具栏(二)

对于InitToolBar()函数进行进一步解析: 1、首先声明一个全局对象:  CToolBar m_toolbar; 2、然后用create()创建toolbar: //创建ToolBar工具条 if(!m_toolbar.CreateEx(this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP...

Unity调用安卓Android的Toast

需求:在游戏中弹窗消息,调起安卓的Toast 项目中需要做Unity和安卓交互时,经常需要通过安卓Toast来做简单的输出,以便于测试。 方法一:Unity中,C#主导 //Unity调用安卓的土司 public static void MakeToast(stringinfo) { AndroidJavaClass unityPla...

(三)android布局基础及范例:人人android九宫格布局(转载http://blog.csdn.net/jiabinjlu/article/details/6921008)

人人android是人人网推出的一款优秀的手机应用软件,我们在使用的时候发现他的首页布局是九宫格模式的,让人觉得很别致,因为现在很多的android软件很少使用这种布局模式,人人android使用的很成功,使人觉得简洁大方美观,下面我们来看看人人android的布局 其实这种布局是使用了一种叫“GridView”的表格布局,下面我来给大家讲一下: 首先,...

Android 实现连续两次点击或连续多次点击退出应用

前言:日常开发过程中,经常会遇到“连续点击两次退出应用”的需求(和“连续点击多次”的需求(如:手机从设置中进入开发者选项)。 直接上代码:双击退出: private long exitTime = 0; /** * 连续点击2次退出 */ public void exitAfterTwice() {...

Android典型界面设计(6)——ActionBar Tab+ViewPager+Fagment实现滑动导航

一、问题描述   在Android典型界面设计一文中,实现典型滑动导航界面,其实使用ActionBar 也可以轻松实现这一效果,甚至也可实现类似Android典型界面设计(3)的双导航效果。可见ActionBar还是比较强大的,关键要深入进去、灵活的运用,下面我们就使用ActionBar实现如图所示的效果: 二、本例特点 1、  兼容低版本 2、 使用...

web页面弹出窗口代码大全

//-----------按钮提示框----------// <input type="button" name="btn2" id="btn2" value="删除" onclick="return confirm('Yes/No');); //-----------按钮提示框----------// <input type="but...