Android Toolbar基本用法

一、Toolbar简介

Toolbar是谷歌在2014年Google IO 大会上推出的一套全新的设计规范Material Design中的控件之一,主要是用来在android 5.0之后代替Android传统的标题栏ActionBar的,引入在android-support-v7兼容包下,使用ToolBar能实现和ActionBar一样的效果,并且ToolBar继承自ViewGroup,使用起来也是更加的灵活。

二、基本使用

Toolbar是Android5.0推出的,为了实现向下兼容,可以使用兼容包appcompat-v7里的Toolbar。

但Google推荐我们使用Androidx来代替支持库,所以本文我将使用Androidx来给大家讲解Toolbar的基本用法

1.Androidx概述

AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目。

AndroidX 对原始 Android 支持库进行了重大改进。与支持库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了支持库,不仅提供同等的功能,而且提供了新的库。此外,AndroidX 还包括以下功能:

  • AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。
  • 与支持库不同,AndroidX 软件包会单独维护和更新。androidx 软件包使用严格的语义版本控制,从版本 1.0.0 开始。您可以单独更新项目中的 AndroidX 库。
  • 所有新支持库的开发工作都将在 AndroidX 库中进行。这包括维护原始支持库工件和引入新的 Jetpack 组件。

2.引入appcompat依赖库

implementation 'androidx.appcompat:appcompat:1.0.0'

3.编写布局文件

  • activity_main.xml里添加Toolbar
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:elevation="5dp"
android:background="?attr/colorPrimary"/>

</LinearLayout>
  • 在res/menu目录下创建menu_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/menu_search"
android:icon="@drawable/ic_search_white_24dp"
android:title="搜索"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_notification"
android:icon="@drawable/ic_chat_white_24dp"
android:title="通知"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/menu_about"
android:title="关于"
app:showAsAction="never"/>
<item
android:id="@+id/menu_exit"
android:title="退出"
app:showAsAction="never"/>
</menu>

4.设置style

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="titleTextColor">@android:color/white</item>
<item name="colorControlNormal">@android:color/white</item>
</style>
</resources>

5.Activity中设置Toolbar相关属性

import android.os.*;
import android.view.*;
import android.widget.*;
import androidx.appcompat.app.*;
import androidx.appcompat.widget.*;

import androidx.appcompat.widget.Toolbar;
import android.graphics.*;

/**
 * Created by 梦雪 on 2019/10/13.
 */
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		//初始化Toolbar
		initToolbar();
    }

	/**
	 * 初始化Toolbar
	 */
	private void initToolbar() {
		// TODO: Implement this method
		//找到Toolbar控件的id
		Toolbar toolbar=findViewById(R.id.toolbar);
		//设置标题
		toolbar.setTitle("AIDE教程网");
		//设置menu
		toolbar.inflateMenu(R.menu.menu_toolbar);
		//设置menu点击监听
		toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener(){

				@Override
				public boolean onMenuItemClick(MenuItem p1) {
					// TODO: Implement this method
					//通过ItemId判断点击项
					switch (p1.getItemId()) {
						case R.id.menu_search:
							Toast.makeText(MainActivity.this, "搜索", Toast.LENGTH_LONG).show();
							break;
						case R.id.menu_notification:
							Toast.makeText(MainActivity.this, "通知", Toast.LENGTH_LONG).show();
							break;
						case R.id.menu_about:
							Toast.makeText(MainActivity.this, "关于", Toast.LENGTH_LONG).show();
							break;
						case R.id.menu_exit:
							finish();
							break;
					}
					return false;
				}
			});
	}
}

注意:
1.在使用Toolbar之前一定要去掉系统自带的ActionBar,可以给Activity使用NoActionBar主题,或者在setContentView()之前调用supportRequestWindowFeature(Window.FEATURE_NO_TITLE)(或者是requestWindowFeature(Window.FEATURE_NO_TITLE))。

下面是效果图:

版权声明:本文为AIDE教程网原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.aidemx.cn/1051.html

版权声明:本文为AIDE教程网原创文章,转载请附上原文出处链接和本声明
本文链接: https://www.aidemx.cn/1051.html

梦雪

专注于AIDE教程分享

    留下你的评论

    *评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

    相关推荐