比ActionBar更好用的Tollbar

允我心安 提交于 2019-12-23 03:53:42

比ActionBar更好用的Tollbar

ActionBar

  • ActionBar是每个活动的标题栏控件。
  • 由于设计问题ActionBar被限制,只能在活动的顶部

Tollbar

  • Tollbar是Material的一个控件。
  • Tollbar的好用之处是因为,Tollbar是继承于ActionBar的,拥有ActionBar所有功能的基础上提高了自身的灵活性,配合其他控件完成一些Material Design[^ 1]效果

使用Tollbar

  • 一个新的项目默认是ActionBar
让Tollbar直观效果更明显

​ 在res/values/styles.xml中修改一个name为APPTheme的样式,指定parent的主题为淡色主题,通常有两个值

Theme.AppCompat.NoActionBar(深色主题)和Theme.AppCompat.Light.NoActionBar(淡色主题)

Tollbar替换ActionBar

在activity_main.xml文件添加appcomat-v7库的Tollbar控件

<androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"<!--高度设置为ActionBar的高度-->
                android:background="?attr/colorPrimary"//<!--背景色设置为colorPrimary-->
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"<!--Tollbar主题-->
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/><!--弹出来的菜单项淡色主题-->

修改MainActivity.java文件

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);//获取Toolbar的实例
        setSupportActionBar(toolbar);//调用方法传入toolbar
    }

此时Tollbar和ActionBar就一样了。

Toolbar

在Tollbar上修改标题名字

修改标题名字,AndroidManifest.xml文件的activity标签中添加android:label=“标题名字”。

给Tollbar添加一些action按钮
  1. 准备几张要添加的矢量图(推荐阿里巴巴矢量图库下载)保存在drawable目录下。
  2. 在res下新建一个menu文件夹目录,右击menu文件夹new一个Menu resource file
  3. 创建一个tollbar.xml文件,添加代码
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/info"
        android:icon="@drawable/info"
        android:title="Info"
        app:showAsAction="always"/><!--always表示永远显示在Toolbar中,屏幕不够不显示-->
    <item
        android:id="@+id/delete"
        android:icon="@drawable/delete"
        android:title="Delete"
        app:showAsAction="ifRoom"/><!--ifroom表示屏幕空间足够的话显示,不够则显示在菜单中,
										never表示永远显示在菜单中-->
</menu>
  1. MainActivity.java添加点击事件代码,这里我只添加测试按钮有没有用的代码,具体逻辑可以依情况修改。
 @Override
     public boolean onOptionsItemSelected(@NonNull MenuItem item) {
         switch (item.getItemId()){
             case R.id.info:
                 Toast.makeText(this,"info",Toast.LENGTH_SHORT).show();
                 break;
             case R.id.delete:
                 Toast.makeText(this,"delete",Toast.LENGTH_SHORT).show();
                 break;
                 default:
         }
         return true;
     }

Toolbar

好了,代码写到这,可以运行看看了,Toolbar的基本功能就先说到这了,欢迎各路大神指点。

[^ 1]: Material Design是谷歌设计的一套界面设计原则

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!