【Interface&navigation】设置应用栏(45)


在最基本的形式中,操作栏在一侧显示活动的标题,在另一侧显示溢出菜单。即使在这种简单的形式中,应用栏也会为用户提供有用的信息,并有助于为Android应用提供一致的外观。
【Interface&navigation】设置应用栏(45)
图1.带有应用程序标题和溢出菜单的应用栏。

从Android 3.0(API级别11)开始,使用默认主题的所有活动都有ActionBar 一个应用栏。但是,app bar功能已逐渐添加到原生软件ActionBar各种Android版本中。因此,本机的ActionBar行为会有所不同,具体取决于设备可能使用的Android系统版本。相比之下,最新功能已添加到支持库的版本中Toolbar,并且可在任何可使用支持库的设备上使用。

因此,您应该使用支持库的Toolbar类来实现活动的应用栏。使用支持库的工具栏有助于确保您的应用程序在最广泛的设备上具有一致的行为。例如, Toolbar小部件在运行Android 2.1(API级别7)或更高版本的设备上提供材料设计体验,但本机操作栏不支持材料设计,除非设备运行的是Android 5.0(API级别21)或更高版本。

将工具栏添加到活动


这些步骤描述了如何将a设置Toolbar 为您的活动的应用栏:
将v7 appcompat支持库添加 到项目中,如支持库设置中所述。
确保活动延伸AppCompatActivity:

public class MyActivity extends AppCompatActivity {
  // ...
}

注意:对应用中使用Toolbar应用栏的每个活动进行此更改。

在应用清单中,将<application> 元素设置为使用appcompat的NoActionBar 主题之一。使用其中一个主题可阻止应用程序使用本机 ActionBar类来提供应用栏。例如:

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

添加Toolbar到活动的布局。例如,以下布局代码添加a Toolbar并赋予其在活动上方浮动的外观:

<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"/>

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

将工具栏放在活动布局的顶部 ,因为您将其用作应用栏。

在activity的onCreate() 方法中,调用activity的setSupportActionBar()方法,并传递activity的工具栏。此方法将工具栏设置为活动的应用栏。例如:

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

您的应用现在有一个基本操作栏。默认情况下,操作栏仅包含应用程序的名称和溢出菜单。选项菜单最初只包含“ 设置”项。您可以向操作栏和溢出菜单添加更多操作,如添加和处理操作中所述。

使用App Bar实用程序方法


将工具栏设置为活动的应用栏后,您可以访问v7 appcompat支持库的ActionBar类提供的各种实用程序方法 。这种方法可以让你做很多有用的事情,比如隐藏和显示应用栏。

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

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Interface&navigation】设置应用栏(45)

猜你喜欢

转载自blog.51cto.com/4789781/2161012