如何将 ActionBar 添加到已经扩展了 ListActivity 的 activity?

How to add ActionBar to an activity which already extends ListActivity?

我有一个 Activity 扩展 ListActivity.
我可以在不扩展 ActionBarActivity 的情况下添加 ActionBar 吗?

您可以使用 工具栏:将 AppCompat 工具栏添加到您的 Activity 布局。

教程(转到操作栏):http://android-developers.blogspot.fr/2014/10/appcompat-v21-material-design-for-pre.html

文档 : https://developer.android.com/reference/android/support/v7/widget/Toolbar.html

在styles.xml中使用全息主题因为只有在全息之后才能使用ActionBar

使用这个:

<style name="AppTheme" parent="android:Theme.Holo">

您可以使用支持库提供的新 AppCompatDelegate 组件。

ActionBar 现已弃用,您应该使用 Toolbar 以符合 Material 设计。您可以使用支持库提供的工具栏。

像这样将其添加到您的 xml 布局中:

<android.support.v7.widget.Toolbar

        android:id="@+id/my_awesome_toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="56dp"
        android:background="?attr/colorPrimary"

        />

请务必在 styles.xml 中使用 NoActionBar 主题。使用 Material 设计颜色标签。

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
</style>

然后,在 OnCreate() 中将 AppCompatDelegate 添加到您的 Activity,就像这样。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    AppCompatCallback callback = new AppCompatCallback() {
        @Override
        public void onSupportActionModeStarted(ActionMode actionMode) {
        }

        @Override
        public void onSupportActionModeFinished(ActionMode actionMode) {
        }
    };

    AppCompatDelegate delegate = AppCompatDelegate.create(this,callback);

    delegate.onCreate(savedInstanceState);
    delegate.setContentView(R.layout.activity_main);

    Toolbar toolbar= (Toolbar) findViewById(R.id.my_awesome_toolbar);
    delegate.setSupportActionBar(toolbar);


}

注意: 要创建 AppCompatDelegate,您需要传递 Activity 本身和一个回调,最好的做法是在 Activity 中实现回调,但出于缩短的原因,我在 onCreate() 中创建了一个实例。