前言
现在好多app的通用导航栏,用Toolbar来实现,既可以使用 Material Design 风格,又可以兼容不同的使用场景
环境
Android Studio 3.1.3
build_versions.min_sdk = 16
build_versions.target_sdk = 27
build_versions.build_tools = "27.0.3"
一.ToolBar 设置Menu方法
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/topbar_height">
<TextView
android:id="@+id/actionbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/color_333333"
android:textSize="@dimen/text_17sp" />
</android.support.v7.widget.Toolbar>
1 新建menu.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/action_recorder"
android:title=“参与记录”
</menu>
2.布局填充 :需要重写 onCreateOptionsMenu 方法
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.rebaterecorder, menu)
return true
}
3.设置事件:找到资源id,设置选中的事件
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.action_recorder) {
startActivity(JoinRecorderActivity::class.java)
}
return true
}
【注】 Toolbar 没有直接提对供menu设置方法,需要通过Theme来调整Menu样式
具体有两种方式:
方式一.
在清单文件中给包含Toolbar的Activity设置Theme
<activity android:name=".MineRebateActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
方式二
直接设置Toolbar主题,theme
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:theme="@style/AppTheme.ActionBar"
android:layout_height="@dimen/topbar_height”/>
主要是通过下面的配置起作用
<item name="android:background">@color/colorPrimary</item>
<item name="actionMenuTextColor”>#333333</item> //调整改变颜色
<item name="actionMenuTextAppearance">@style/AppTheme.ActionBar.MenuTextStyle
</item>
【注】如果您的BaseActivity 继承 AppCompatActivity这种兼容类,有可能会提示让设置CompatTheme 的主题类型,按照提示进行设计即可