效果图
关键代码
Toolbar
是Google在android-support-v7兼容包时新引入的用来替代ActionBar
,Toolbar
比ActionBar
可操作性更强,更方便开发者自定义使用。使用时,在xml
布局文件中,用app:menu
指定Toolbar
的菜单选项,用app:navigationIcon
指定导航按钮图标。
xml
布局文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:titleTextColor="@color/white"
app:menu="@menu/menu_toolbar"
app:navigationIcon="@drawable/ic_baseline_directions_subway_24"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
menu
布局文件如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!--
item的icon和title属性顾名思义
app:showAsAction:
1.never 总是放置在溢出菜单中
2.always 总是放置在操作栏上
3.ifRoom 如果有空间放置,则放置在操作栏上,否则放置到溢出菜单中。
-->
<item
android:id="@+id/menu_share"
android:icon="@drawable/ic_baseline_share_24"
android:title="分享"
app:showAsAction="always" />
<item
android:id="@+id/menu_settings"
android:icon="@drawable/ic_baseline_settings_24"
android:title="设置"
app:showAsAction="always" />
<item
android:id="@+id/menu_more"
android:icon="@drawable/ic_baseline_more_horiz_24"
android:title="更多"
app:showAsAction="always" />
</menu>
代码中用toolbar.setTitle
方法设置标题文字,用setSupportActionBar(toolbar)
方法用Toolbar
替换默认的ActionBar
。覆写onCreateOptionsMenu
来解析菜单布局文件。
kotlin
逻辑代码如下:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById<Toolbar>(R.id.toolbar)
toolbar.setTitle(R.string.title)
setSupportActionBar(toolbar)
toolbar.setNavigationOnClickListener {
Toast.makeText(this, "主页", Toast.LENGTH_SHORT).show()
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_toolbar, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_share -> {
Toast.makeText(this, "分享", Toast.LENGTH_SHORT).show()
return true
}
R.id.menu_settings -> {
Toast.makeText(this, "设置", Toast.LENGTH_SHORT).show()
return true
}
R.id.menu_more -> {
Toast.makeText(this, "更多", Toast.LENGTH_SHORT).show()
return true
}
}
return false
}
}
源码地址
https://github.com/yurensan/MaterialDesignDemo
我是予人三,希望大家点赞支持我哦~ 有大家的鼓励我会分享更多内容