Android菜单与标题栏
Android界面主要由三部份组成分别是状态栏、标题栏、内容区域,菜单主要由选项菜单OptionMenu、上下文菜单ContextMenu、弹出菜单PopupMenu组成。这里介绍一下对标题栏与选项菜单OptionMenu的理解。
在Android2.3之前标题栏主要用于标识当前操作位置,Android3.0之后标题栏增加了导航,动作功能。我们可以这样理解3.0版本之后Android系统将2.3之前主要由选项菜单完成的动作集成到了标题栏上,取了一个新名字动作栏ActionBar。由于ActionBar使用不够灵活等原因Android5.0后推出了ToolBar工具栏取代ActionBar。默认情况下,Toolbar和ActionBar在外观上并没有太大的区别,只是说Toolbar像控件一样使用更自由了,而不像ActionBar那样有太多系统定制的条条框框,如下图所示是默认情况下的Toolbar取代ActionBar后的显示:
![]()
综上分析我们可以知道ActionBar和ToolBar都可用于实现标题栏,现在的标题栏具有导航、显示当前位置,动作操作等功能。动作与以前的选项菜单兼容。
ToolBar简单使用:
布局
[java]<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
app:title="标题"
app:titleTextColor="@android:color/white"
app:logo="@mipmap/my_ic_launcher"
app:navigationIcon="@drawable/actionbar_up_indicator"
app:subtitle="工具条"
app:subtitleTextColor="@android:color/white"
app:popupTheme="@style/MyToolBarPopupMenuStytle"/>
</RelativeLayout>[/java]
Menu:
[java]<?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/my_option_add"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="ifRoom"
android:title="添加" />
<item
android:id="@+id/my_option_delete"
android:icon="@android:drawable/ic_input_add"
app:showAsAction="ifRoom"
android:title="删除" />
<item
android:id="@+id/my_option_update"
android:icon="@android:drawable/ic_menu_share"
app:showAsAction="ifRoom"
android:title="编辑" >
<menu>
<item android:title="修改" >
<menu>
<item android:title="三级菜单项"/>
</menu>
</item>
<item android:title="设置"/>
</menu>
</item>
</menu>[/java]
代码
[java]public class ToolBarActivity extends AppCompatActivity {
public Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tool_bar_layout);
mToolbar = (Toolbar) findViewById(R.id.my_toolbar);
mToolbar.inflateMenu(R.menu.my_option_menu);
mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.my_option_add:
Toast.makeText(ToolBarActivity.this,"添加成功",Toast.LENGTH_SHORT).show();
break;
case R.id.my_option_delete:
Toast.makeText(ToolBarActivity.this,"删除成功",Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ToolBarActivity.this,"返回",Toast.LENGTH_SHORT).show();
finish();
}
});
}[/java]
样式主题
[java]<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyToolbarTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!–设置menu菜单不遮挡toolbar–>
<item name="actionOverflowMenuStyle">@style/MyOverflowMenuStyle</item>
<!–配置Menu的图标–>
<item name="actionOverflowButtonStyle">@style/MyOverflowMenuButtonStyle</item>
</style>
<style name="MyOverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
<item name="overlapAnchor">false</item>
</style>
<style name="MyOverflowMenuButtonStyle" parent="Widget.AppCompat.Light.ActionButton.Overflow">
<item name="android:src">@drawable/ic_menu_more_off</item>
</style>
<style name="MyToolBarPopupMenuStytle" parent="Widget.AppCompat.Light.PopupMenu">
<!–<item name="android:drawableLeft">@android:drawable/ic_input_add</item>–>
<!– 设置Menu菜单的字体大小–>
<item name="android:textSize">18sp</item>
<!– 设置Menu菜单的字体色–>
<item name="android:textColorPrimary">@android:color/background_dark</item>
<!– 设置Menu菜单的背景色–>
<item name="android:itemBackground">@android:color/white</item>
</style>
</resources>[/java]
关于ActionBar和ToolBar的具体使用可以参考如下文章
Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
Android ToolBar使用
转载请注明来源:Android菜单与标题栏




























