1. Toolbar类
Toolbar
是替代ActionBar
的产物,低版本可以使用v7兼容包,使用Theme.AppCompat
主题,并添加配置。
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
2. Toolbar配置
主要属性,
navigationIcon
,设置导航栏图标logo
,设置logotitle
,设置标题subtitle
,设置副标题background
,设置背景
Toolbar
还可以设置自定义子视图,
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="60dp"
app:navigationIcon="@drawable/nav_back"
app:logo="@mipmap/ic_launcher_round"
app:title="标题"
app:subtitle="副标题"
app:titleMarginStart="20dp"
android:background="@color/colorPrimary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:textSize="16sp"
android:textColor="@color/red"/>
</android.support.v7.widget.Toolbar>
3. 添加菜单
Activity
需要继承AppCompatActivity
,并调用setSupportActionBar(Toolbar)
方法。
public clas ToolbarActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_design_toolbar);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
}
在menu
目录下添加menu_toolbar.xml
文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_faq"
android:icon="@drawable/nav_faq"
android:title="问题"
app:showAsAction="always" />
<item
android:id="@+id/item_add"
android:icon="@drawable/nav_add"
android:title="添加"
app:showAsAction="never" />
<item
android:id="@+id/item_setting"
android:icon="@drawable/nav_setting"
android:title="设置"
app:showAsAction="never" />
</menu>
在代码中添加Menu
,并设置点击事件
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_toolbar, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.item_faq) {
Toast.makeText(this, "Faq", Toast.LENGTH_SHORT).show();
} else if (item.getItemId() == R.id.item_add) {
Toast.makeText(this, "Add", Toast.LENGTH_SHORT).show();
} else if (item.getItemId() == R.id.item_setting) {
Toast.makeText(this, "Setting", Toast.LENGTH_SHORT).show();
}
return true;
}
效果如下
4. 代码设置
Toolbar
也提供了很多set方法,
setNavigationIcon(int resId)
,设置导航栏图标setNavigationOnClickListener(OnClickListener listener)
,设置导航栏监听事件setLogo(int resId)
,设置logosetTitle(int resId)
,设置标题setTitle(CharSequence title)
,设置标题setSubtitle(int resId)
,设置副标题setSubtitle(CharSequence subtitle)
,设置副标题setBackgroundColor(int color)
,设置背景setBackgroundResource(int resid)
,设置背景setOverflowIcon(Drawable icon)
,设置菜单按钮样式
效果如下
5. 修改菜单样式
设置Toolbar
的popupTheme
属性,修改下拉框样式
app:popupTheme="@style/AppTheme.OverFlowMenu"
在style.xml
中,添加AppTheme.OverFlowMenu
<style name="AppTheme.OverFlowMenu" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<!-- 是否覆盖锚点,默认为true,即盖住Toolbar -->
<item name="overlapAnchor">false</item>
</style>