比ActionBar更好用的Tollbar
Posted good-good-study-cl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比ActionBar更好用的Tollbar相关的知识,希望对你有一定的参考价值。
比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就一样了。
在Tollbar上修改标题名字
修改标题名字,AndroidManifest.xml文件的activity标签中添加android:label="标题名字"。
给Tollbar添加一些action按钮
- 准备几张要添加的矢量图(推荐阿里巴巴矢量图库下载)保存在drawable目录下。
- 在res下新建一个menu文件夹目录,右击menu文件夹new一个Menu resource file
- 创建一个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>
- 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的基本功能就先说到这了,欢迎各路大神指点。
[^ 1]: Material Design是谷歌设计的一套界面设计原则
以上是关于比ActionBar更好用的Tollbar的主要内容,如果未能解决你的问题,请参考以下文章