我一直喜欢放一个可以控制工具栏出现方式的AppBarLayout
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbarAddPlan"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_marginLeft="50dp"
app:popupTheme="@style/AppTheme.PopupOverlay" >
</android.support.v7.widget.Toolbar>
<ImageButton
android:id="@+id/btnAddPlanTourClose"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:src="@drawable/close_circle_outline" />
</RelativeLayout>
</android.support.design.widget.AppBarLayout>
这样可以放置更多元素并按照我的意愿排列它们。在这种情况下,插入一个左图标以通过片段关闭活动。
所以在片段中这样做
//That is in the Fragment
setupToolbar(R.id.toolbarAddPlan,getString(R.string.addPlanTour),true)
//It is in na Kotlin Extansion file.
inline fun Fragment.setupToolbar(@IdRes id: Int, title:String?= null, upNavigation: Boolean = false) : ActionBar {
val activityCompat = activity as AppCompatActivity
val toolbar = activity?.findViewById<Toolbar>(id)
activityCompat.setSupportActionBar(toolbar)
if(title != null){
activityCompat.supportActionBar?.title = title
}
activityCompat.supportActionBar?.setHomeButtonEnabled(true)
return activityCompat.supportActionBar!!
}
结果会是这样的:
我通过膨胀菜单放置的动作“SALVAR”
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
super.onCreateOptionsMenu(menu, inflater)
inflater?.inflate(R.menu.menu_add_plan_tour,menu)
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
return when (item?.itemId){
R.id.menuPlanTourSave ->{
true
}else ->return super.onOptionsItemSelected(item)
}
}
菜单 XML 布局 src/menu/menu_add_plan_tour.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">
<!-- "Mark Favorite", should appear as action button if possible -->
<item
android:id="@+id/menuPlanTourSave"
android:title="@string/btnSave"
android:tooltipText="@string/btnSave"
android:contentDescription="@string/btnSave"
app:showAsAction="always|withText">
<TextView
android:text="@string/btnSave"
android:textSize="15dp"
android:textColor="@color/colorPrimaryLight"
/>
</item>
</menu>
不要忘记使用 setHasOptionsMenu(true) 来启用菜单。