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);

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章