操作栏最基本的形式是在一侧显示 activity 的标题,在另一侧显示溢出菜单。即便是采用这种基本形式,应用栏也能为用户提供实用信息,并为 Android 应用带来一致的外观和风格。
所有使用默认主题的 activity 都有一个 ActionBar
作为应用栏。在各种 Android 版本中,原生 ActionBar
中添加了应用栏功能。因此,原生 ActionBar
的行为会有所不同,具体取决于设备使用的 Android 版本。
另一方面,功能已添加到 AndroidX AppCompat 库的 Toolbar
版本,这意味着这些功能适用于使用 AndroidX 库的设备。
因此,请使用 AndroidX 库的 Toolbar
类来实现 activity 的应用栏。使用 AndroidX 库的工具栏可使应用的行为在尽可能多的设备上保持一致。
向 Activity 添加工具栏
以下步骤介绍了如何将Toolbar
设置为 activity 的应用栏:
- 按照 AndroidX 概览中的说明,将 AndroidX 库添加到您的项目中。
- 确保 activity 会扩展
AppCompatActivity
:Kotlin
class MyActivity : AppCompatActivity() { // ... }
Java
public class MyActivity extends AppCompatActivity { // ... }
- 在应用清单中,将
<application>
元素设置为使用 AppCompat 的NoActionBar
主题之一,如以下示例所示。使用其中某个主题可防止应用使用原生ActionBar
类提供应用栏。<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
- 将
Toolbar
添加到 activity 的布局中。例如,以下布局代码会添加一个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 的布局的顶部,因为您要使用它作为应用栏。
- 在 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); }
您的应用现在有了一个基本操作栏。默认情况下,操作栏包含应用名称和一个溢出菜单,该菜单最初包含设置项。您可以向操作栏和溢出菜单添加更多操作,如添加和处理操作中所述。
使用应用栏实用程序方法
将工具栏设置为 activity 的应用栏后,您就可以访问 AndroidX 库的 ActionBar
类提供的实用程序方法。您可以通过此方法执行一些实用操作,例如隐藏和显示应用栏。
如需使用 ActionBar
实用程序方法,请调用 activity 的 getSupportActionBar()
方法。此方法会返回对 AppCompat ActionBar
对象的引用。获得该引用后,您就可以调用任何 ActionBar
方法来调整应用栏。例如,如需隐藏应用栏,请调用 ActionBar.hide()
。