工具栏菜单

工具栏菜单

添加字符串资源

在\res\values\strings.xml中可添加App中使用到的字符串资源,通过这种方式,可轻松实现语言的本地化。

<resources>
    <string name="app_name">DialogTest</string>
    <string name="action_settings">Settings</string>
</resources>

在XML文件中定义菜单

菜单是一种类似于布局的资源。创建菜单定义文件并放置在res/menu目录下,Android会自动生成相应的资源ID。随后,在代码中实例化菜单时,就可以直接使用。
在项目工具窗口中,右键点击res目录,选择New->Android resource file菜单项。在弹出的窗口界面,选择Menu资源类型,并给资源文件一个名称,点击OK按钮确认。
创建菜单文件

图1 创建菜单文件

菜单文件格式

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.zj.dialogtest.MainActivity">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:icon="@android:drawable/ic_menu_add"
        android:title="@string/action_settings"
        app:showAsAction="ifRoom|withText" />
</menu>

每个菜单项用一个item表示,常用属性如下:
- android:id 定义此菜单项的id,代码中可以通过此id引用该菜单项
- android:icon 定义此菜单项的图表
- android:title 定义此菜单项的文字标题,值可以是纯文字量,但是建议@string引用字符串资源
- android:showAsAction 用于指定菜单选项是显示在工具栏上,还是隐藏于溢出菜单。该属性当前设置为ifRoom和withText的组合值,因此,只要空间足够,菜单项图标及其文字描述都会显示在工具栏上,如果空间仅够显示图标,文字描述就不会显示,如空间不够显示任何项,菜单就会隐藏到溢出菜单。

在代码中创建菜单

在代码中,Activity类提供了管理菜单的回调函数。需要选项菜单时,Android会调用Activity的onCreateOptionsMenu(Menu)方法创建菜单。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //TODO:从资源文件加载菜单
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

响应菜单项选择

当选择具体菜单项时,会触发onOptionsItemSelected(MenuItem)回调方法。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (id == R.id.action_settings) {
        //TODO:执行具体的菜单动作
        return true;
    }
    return super.onOptionsItemSelected(item);
}

层级式导航

Android应用中有两种返回导航方式,一种是通过back按钮回退,一种是通过页面左上角<-按钮回退。虽然两者都能实现页面回退,但是两种方式的机制是大不相同的,效果也不一样。
用户点击back按钮时,如下的intent会被创建:

Intent intent = new Intent(this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();

FLAG_ACTIVITY_CLEAR_TOP指示Android在回退栈中寻找指定的Activity实例。如果存在,则弹出栈内所有其它的activity,让启动的目标activity出现在栈顶(显示在屏幕上)。

通过<-按钮实现返回导航的方式被称作层级式导航,可在应用内实现逐级向上导航。

扫描二维码关注公众号,回复: 1710496 查看本文章

实现层级式导航

在AndroidManifest.xml中注册的Activity有个属性android:parentActivityName,用户指示点击<-按钮后返回到哪个上级activity。

<activity
    android:name=".ChildActivity"
    android:label="@string/title_activity_child"
    android:parentActivityName=".MainActivity"
    android:theme="@style/AppTheme.NoActionBar">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.zj.dialogtest.MainActivity" />
</activity>

猜你喜欢

转载自blog.csdn.net/mosee/article/details/80499550