设置应用栏

试试 Compose 方式
Jetpack Compose 是推荐用于 Android 的界面工具包。了解如何在 Compose 中添加组件。

最基本的操作栏会在一侧显示 activity 的标题,在另一侧显示一个溢出菜单。即使采用这种基本形式,应用栏也能为用户提供有用的信息,并赋予 Android 应用一致的外观和风格。

一张图片,显示了 Now in Android 应用中的应用栏
图 1. “Now in Android”应用中带有操作图标的应用栏。

所有使用默认主题背景的 activity 均使用 ActionBar 作为应用栏。经过不同 Android 版本的演化,应用栏功能已添加到原生 ActionBar 中。因此,原生 ActionBar 的行为会有所不同,具体取决于设备使用的是哪个版本的 Android 系统。

另一方面,功能已添加到 AndroidX AppCompat 库的 Toolbar 版本,这意味着这些功能在使用 AndroidX 库的设备上可用。

因此,请使用 AndroidX 库的 Toolbar 类实现 activity 的应用栏。使用 AndroidX 库的工具栏可让应用在最大范围的设备上保持一致的行为。

向 Activity 添加工具栏

以下步骤说明了如何将 Toolbar 设置为 activity 的应用栏:
  1. 将 AndroidX 库添加到您的项目中,如 AndroidX 概览中所述。
  2. 确保 activity 扩展 AppCompatActivity

    Kotlin

    class MyActivity : AppCompatActivity() {
      // ...
    }
    

    Java

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
  3. 在应用清单中,将 <application> 元素设置为使用 AppCompat 的其中一个 NoActionBar 主题,如以下示例所示。使用其中一个主题背景可以防止应用使用原生 ActionBar 类提供应用栏。
    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. 向 activity 的布局添加一个 Toolbar。例如,以下布局代码会添加一个 Toolbar,并赋予其浮动在 activity 之上的外观:
    <androidx.appcompat.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"/>
    

    有关应用栏高度的建议,请参阅 Material Design 规范

    将工具栏定位在 Activity 布局的顶部,因为您要使用它作为应用栏。

  5. 在 activity 的 onCreate() 方法中,调用 activity 的 setSupportActionBar() 方法,然后传递 activity 的工具栏,如以下示例所示。此方法会将工具栏设置为 activity 的应用栏。

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my)
        // The Toolbar defined in the layout has the id "my_toolbar".
        setSupportActionBar(findViewById(R.id.my_toolbar))
    }
    

    Java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
    }
    

您的应用现在有了一个基本操作栏。默认情况下,操作栏包含应用的名称和一个溢出菜单,该菜单最初包含 Settings 菜单项。您可以向操作栏和溢出菜单添加更多操作,如添加和处理操作中所述。

使用应用栏实用程序方法

将工具栏设为 activity 的应用栏后,您就可以访问 AndroidX 库的 ActionBar 类提供的实用程序方法。您可以通过此方法执行许多有用的操作,例如隐藏和显示应用栏。

如需使用 ActionBar 实用程序方法,请调用 activity 的 getSupportActionBar() 方法。此方法将返回对 AppCompat ActionBar 对象的引用。获得该引用后,您可以调用任何 ActionBar 方法来调整应用栏。例如,如需隐藏应用栏,请调用 ActionBar.hide()