Android-ActionBar-与Menu结合

ActionBar就是一个标题栏,以前Android3.0之前还称为标题栏,Android3.0之后取名为ActionBar

首先必须在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类,否则将无法使用ActionBar

android:theme="@android:style/Theme.Holo.Light"

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.Holo.Light"
        android:name=".intent.MyApplication">

Android对ActionBar进行了一系列的封装;

ActionBar就是标题栏:

隐藏标题栏:

package liudeli.activity;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;

public class MyActionBarActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_action_bar);

        // ActionBar是在Activity中,所以可以直接得到
        ActionBar actionBar = getActionBar();

        // 隐藏ActionBar(标题栏)
        actionBar.hide();
    }
}

 可以对ActionBar进行各种各样的设置,ActionBar提供了各式各样的方法:


关于Menu菜单:

早期之前的Android2.2,Android2.3 .....  系统的手机,都是有Menu菜单键的,一般是在左边的键,就是菜单Menu键

随着Android的发展,这个菜单Menu键 慢慢的就不见了,现在很多手机都没有了这个菜单Menu键了,于是Android就设计了可以把Menu放置在ActionBar上;


 AndroidManifest.xml的主题配置为 可以使用ActionBar

首先必须在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类,否则将无法使用ActionBar

android:theme="@android:style/Theme.Holo.Light"

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.Holo.Light"
        android:name=".intent.MyApplication">

 Activity的代码:

package liudeli.activity;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MyActionBarActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ActionBar是在Activity中,所以可以直接得到
        // ActionBar actionBar = getActionBar();

        // 隐藏ActionBar(标题栏)
        // actionBar.hide();

        // actionBar. ......
    }

    /**
     * 创建菜单里面的选择
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        // 使用菜单加载器
        MenuInflater menuInflater = getMenuInflater();

        // 加载一个菜单文件
        menuInflater.inflate(R.menu.menu, menu);

        return true;
    }

    /**
     * 菜单里面的选择被选择回调
     * @param item
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        super.onOptionsItemSelected(item);
        switch (item.getItemId()) {
            case R.id.menu_create:
                Toast.makeText(this, item.getTitle()+ "-你选择了创建", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_delete:
                Toast.makeText(this, item.getTitle()+ "-你选择了删除", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_sub1:  // 子菜单
                Toast.makeText(this, item.getTitle()+ "-你选择了子菜单一", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_sub2:  // 子菜单
                Toast.makeText(this, item.getTitle()+ "-你选择了子菜单二", Toast.LENGTH_SHORT).show();
                break;
        }
        return true;
    }
}

Menu.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">

    <item
        android:id="@+id/menu_create"
        android:icon="@android:drawable/ic_menu_add"
        android:title="X新建">
    </item>

    <item
        android:id="@+id/menu_delete"
        android:icon="@android:drawable/ic_menu_add"
        android:title="X删除">
    </item>

    <item android:title="X子菜单">

        <menu>

            <item
                android:id="@+id/menu_sub1"
                android:icon="@android:drawable/ic_menu_add"
                android:title="X子菜单1">
            </item>

            <item
                android:id="@+id/menu_sub2"
                android:icon="@android:drawable/ic_menu_add"
                android:title="X子菜单2">
            </item>

        </menu>

    </item>

</menu>

效果:(Android模拟器是有Menu菜单键的)

原文地址:https://www.cnblogs.com/android-deli/p/10184981.html