toolbar学习

toolbar learning

Posted by fa1con on October 21, 2019

记录学习,不定时更新

概述

toolbar用来制作app标题栏

前置工作

导入v7包

1
2
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

MainActivity需要继承AppCompatActivity

1
public class MainActivity extends AppCompatActivity

layout里的AndroidManifest.xml里设置主题,可以在activity中设置

1
2
3
4
5
6
7
8
<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
 </application>

然后layout的activity_main.xml中注册该布局

1
2
3
4
5
6
<android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

android studio中新建basic activity项目就会自动创建好这些 然后可以在注册的时候添加一些设置

1
2
3
app:title="标题"
app:subtitle="副标题"
app:logo="@mipmap/ic_launcher_round" 

详细的看文档: https://developer.android.com/reference/android/widget/Toolbar

然后在onCreat里

1
2
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);//替代ActionBar方法

图标设置及点击事件

然后可以设置个图标,接着对这个图标设置点击事件

1
2
3
4
5
6
7
        toolbar.setNavigationIcon(R.mipmap.ic_launcher);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"点击导航栏",Toast.LENGTH_LONG).show();
            }
        });

设置导航栏及点击事件

在layout里面创建menu文件夹,然后创建menu_main.xml(as会自动生成) 就像这样子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.toolbar.MainActivity">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="设置"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="测试"
        app:showAsAction="never" />
</menu>

在activity中实现

1
2
3
4
5
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

as会自动生成,补上自己所需功能即可 然后是点击事件,写在Oncreat()里就ok

1
2
3
4
5
6
7
8
9
10
11
        toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                if(menuItem.getItemId() == R.id.action_settings){
                    Toast.makeText(MainActivity.this,"点击了设置",Toast.LENGTH_SHORT).show();
                }else if(menuItem.getItemId() == R.id.action_test){
                    Toast.makeText(MainActivity.this,"click test",Toast.LENGTH_SHORT).show();
                }
                return false;
            }
        });

参考链接:ToolBar使用浅谈