我刚安装了Android Studio,开始编写一个扩展ActionBarActivity的活动,结果显示它已被弃用.那么,我该如何为我的活动设置一个actionbar呢.

推荐答案

自从推出Toolbar以来,ActionBar就一直被弃用.Toolbar可以被视为任何动作条的"超集".所以"旧"ActionBar现在是Toolbar的一个例子.如果您想要类似的功能,但没有弃用警告,请执行以下操作:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
    toolbar.setTitle(R.string.app_name);
    setSupportActionBar(toolbar);
}

您需要在布局xml中定义Toolbar:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>

有了这个新功能,你就可以创建你自己的定制ActionBar,然后让Android来做繁重的工作.只需从Toolbar开始创建您自己的自定义视图即可.


此外,您应该使用AppCompatActivity而不是ActionBarActivity,它是在最新版本的appcompat库中引入的.所以别忘了更新gradle

compile 'com.android.support:appcompat-v7:22.1.1'

Android相关问答推荐

以编程方式更改Android应用程序上的文件许可

滚动屏幕时更改按钮外观

推断的类型是片段,但应为上下文

无法使用MenuItemColors.Copy()

从未设置实时数据值

如何判断堆肥是否为空?

未解析的引用:视图模型

如何检测低性能 Android 设备进行条件动画渲染?

了解 CoroutineScope(Job() + Dispatchers.Main) 语法

Jetpack 将 Grid 与基于大小的自适应列数组合在一起

如何使用 Jetpack Compose 在图像上叠加文本

找不到(包名称).在以下位置搜索:

如何只允许拖动 BottomSheetScaffold 中 BottomContent 的 SheetPeek 的一部分?

Android:appcompat 和 material 如何从默认创建 appcompat 和 material 视图?

如何关闭可组合对话框?

如何在屏幕旋转或系统主题更改后将光标移动到 TextField 的末尾并保持键盘显示?

在jetpack compose中将图像添加到脚手架顶部栏

android 13 版本是否会影响 android 12 目标应用程序

使用 Room 在 SQLite 中保存复杂的 JSON 响应

compose :为什么以记住启动的列表触发方式与快照不同