ActionBar和ToolBar
Action Bar是Android 3.0引入的导航栏功能,然而到5.0的时候,又推出了ToolBar,实际上这两个可以理解为同一个东西,ToolBar是对ActionBar的升级,使用起来也基本是一样的。只是因为ActionBar在实际使用过程中的各种问题,才推出了ToolBar来接替ActionBar。ActionBar通常翻译为操作栏,而到了ToolBar则翻译为工具栏,这里我们统称为工具栏。
添加和隐藏工具栏
在Toolbar引入之前,添加ActionBar是通过Theme来实现的,在Manifest文件中指定Application或者Activity的Theme为Theme.Holo或者它的子类,运行以后ActionBar会自动添加进来。移除ActionBar也可以通过指定theme的方式,设置为Theme.Holo.NoActionBar。或者使用动态方式,先获取到ActionBar,然后设置隐藏
ActionBar actionBar = getActionBar();
actionBar.hide();
ToolBar的引入之后,Android已经不推荐我们这么操作了。应该采用ToolBar的方式来管理工具栏
为了能更好的向下兼容,官方推荐我们使用 v7 appcompat 来添加和管理ToolBar。添加ToolBar的步骤如下:
按照支持库设置中所述向您的项目添加 v7 appcompat 支持库。
确保 Activity 可以扩展 AppCompatActivity:
public class MyActivity extends AppCompatActivity {
// ...
}
注:请为您应用中每个使用 Toolbar 作为应用栏的 Activity 进行此更改。
在应用清单中,将 元素设置为使用 appcompat 的其中一个 NoActionBar 主题。使用这些主题中的一个可以防止应用使用原生 ActionBar 类提供应用栏。例如:
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
到这里为止,所做的工作是确保Activity中不包含默认的ActionBar,否则会引起崩溃。如果想保留theme,而这个theme又是包含ActionBar的,可以在Activity中调用requestWindowFeature(Window.FEATURE_NO_TITLE);,如果是继承在AppCompatActivity,调用supportRequestWindowFeature(Window.FEATURE_NO_TITLE),这样就可以去掉theme中自带的ActionBar了
向 Activity 的布局添加一个 Toolbar。例如,以下布局代码可以添加一个 Toolbar 并赋予其浮动在 Activity 之上的外观:
< android.support.v7.widget.Toolbar