文章目录
Kotlin搭配AndroidKtx,简直爽到爆。
1. ActionBar
- Activity 使用或继承App的Theme,
<!-- Base application theme with ActionBar.重点是 DarkActionBar-->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
kotlin:
//在mainActivity里的Actionbar就这样获取
// ? 是空安全符号,有了它避免了NullPointerException
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.show()
supportActionBar?.title = "Title"
supportActionBar?.subtitle = "SubTitle"
supportActionBar?.setIcon(android.R.drawable.ic_dialog_info)
supportActionBar?.setLogo(android.R.drawable.ic_dialog_map)
}
2. ToolBar
因为要使用toolBar 第一件事就是去掉Android系统本身默认的ActionBar
- 将Activity使用或者继承App的Theme改成NoActionBar
<!-- Base application theme no ActionBar. 重点是 NoActionBar-->
<style name="NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
- 增加依赖,在build.gradle里添加对 appcompat的依赖
以下是Kotlin的依赖:
3. 在布局文件里使用ToolBar
- 写menu的xml文件
<?xml version ="1.0" encoding ="utf-8"?><!-- Learn More about how to use App Actions: https://developer.android.com/guide/actions/index.html -->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- "Mark Favorite", should appear as action button if possible -->
<item
android:id="@+id/action_favorite"
android:icon="@android:drawable/btn_star_big_on"
android:title="TitleFavorite"
app:showAsAction="ifRoom"/>
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="TitleSettings"
app:showAsAction="never"/>
</menu>
5. 重写三个方法能完成对menu的所有操作
override fun onResume() {
super.onResume()
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.show()
supportActionBar?.title = "Title"
supportActionBar?.subtitle = "SubTitle"
supportActionBar?.setIcon(android.R.drawable.ic_dialog_info)
supportActionBar?.setLogo(android.R.drawable.ic_dialog_map)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.actions_main, menu)
return true
}
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
menu?.getItem(R.id.action_settings)?.title = "被更改的title"
return super.onPrepareOptionsMenu(menu)
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when (item?.itemId) {
R.id.action_favorite -> {
Toast.makeText(applicationContext, "action_favorite",Toast.LENGTH_SHORT).show();
}
R.id.action_settings -> {
Toast.makeText(applicationContext, "action_settings",Toast.LENGTH_SHORT).show();
}
else -> super.onOptionsItemSelected(item)
}
return true
}