android 应用栏使用

一、设置应用栏

 Android 3.0(API 级别 11)开始,所有使用默认主题背景的 Activity 均使用 ActionBar 作为应用栏。不过,经过不同 Android 版本的演化,应用栏功能已逐渐添加到原生 ActionBar 中。因此,原生 ActionBar 的行为会有所不同,具体取决于设备使用的是哪个版本的 Android 系统。相比之下,最新功能已添加到支持库版本的 Toolbar 中,并且这些功能可以在任何能够使用支持库的设备上使用。

因此,您应使用支持库的 Toolbar 类实现 Activity 的应用栏。使用支持库的工具栏有助于确保您的应用在最大范围的设备上保持一致的行为。例如,Toolbar 微件能够在运行 Android 2.1(API 级别 7)或更高版本的设备上提供 Material Design 体验,但除非设备运行的是 Android 5.0(API 级别 21)或更高版本,否则原生操作栏不支持 Material Design。

如下将说明如何将toolbar 设置为activity应用栏

1.首先确保activity继承于 AppCompatActivity 如图:

2.更改AndroidManifest.xml 中的主题为如下:

  <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />

3.在activity添加如下代码:

public class MainActivity extends AppCompatActivity {
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       //设置toolbar
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);

4.在activity_main.xml 布局文件添加如下控件:

<android.support.v7.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

5.结果我们用toolbar 实现了一个简单的应用栏功能

二、为应用栏添加处理操作

我们可以通过应用栏添加用户操作按钮。借助此功能,您可以将在当前上下文中最重要的操作放在应用顶部,比如添加扫一扫,添加好友等功能。

添加操作图标

请在项目的 res/menu/ 目录中创建一个新的 XML 文件。

为要包含在操作栏中的每项分别添加一个 <item> 元素,如以下菜单 XML 文件代码示例所示:

<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/action_scan"
        android:icon="@drawable/che"
        android:title="@string/action_scan"
        app:showAsAction="ifRoom"/>

    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_add_friends"
        android:title="@string/action_add_friends"
        app:showAsAction="never"/>

</menu>

app:showAsAction 属性用于指定操作是否应在应用栏中显示为按钮。如果您设置了 app:showAsAction="ifRoom"(例如示例代码的“收藏”操作),则只要应用栏中有足够的空间,此操作便会显示为按钮;如果空间不足,系统便会将无法容纳的操作发送到溢出菜单。如果设置了 app:showAsAction="never"(例如示例代码的“设置”操作),则此操作会始终列在溢出菜单中,而不会显示在应用栏中。

添加相应事件操作

以上我们在布局文件添加了内容,我们需要通过onCreateOptionsMenu方法创建应用栏,如下:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_done, menu);
    return true;
}

接着我们为应用添加响应事件:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_scan:
            Toast.makeText(this, "扫一扫", Toast.LENGTH_SHORT).show();
            return true;

        case R.id.action_add_friends:
            Toast.makeText(this, "添加好友", Toast.LENGTH_SHORT).show();
            return true;

        default:
            return super.onOptionsItemSelected(item);

    }
}

最终效果图:

我们为应用栏添加了两个选项,第一个选项以图标形式显示,第二个以文字形式显示。

三.添加向上操作

这节课介绍了如何通过在清单中声明 Activity 的父级,并启用应用栏的“向上”按钮,来向 Activity 添加“向上”按钮。

要在 Activity 中支持向上功能,您需要声明 Activity 的父级。为此,您可以在应用清单中设置 android:parentActivityName 属性。

1.通过布局加向上操作

要在 Activity 中支持向上功能,您需要声明 Activity 的父级。为此,您可以在应用清单中设置 android:parentActivityName 属性。

android:parentActivityName 属性是在 Android 4.1(API 级别 16)中引入的。要支持搭载旧版 Android 的设备,请定义一个 <meta-data> 名称值对,其中名称为 "android.support.PARENT_ACTIVITY",值为父 Activity 的名称。

例如,假设应用有一个名为 MainActivity 的主 Activity 和一个子 Activity。以下清单代码声明了这两个 Activity,并指定了父/子关系:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.abc.clockview">

    <application
        android:allowBackup="true"
        android:icon="@drawable/che"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SecondActivity" android:parentActivityName=".MainActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>
    </application>

</manifest>

2.通过代码加向上操作

要为具有父 Activity 的 Activity 启用“向上”按钮,请调用应用栏的 setDisplayHomeAsUpEnabled() 方法。通常,您需要在创建 Activity 时调用此方法。例如,以下 onCreate() 方法将 Toolbar 设为 MyChildActivity 的应用栏,然后启用此应用栏的“向上”按钮

public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

}

}

原创文章 29 获赞 1 访问量 9267

猜你喜欢

转载自blog.csdn.net/qinxuexiang_blog/article/details/103439568