适用于API 19的Android工具栏?(对于API 21工作正常)

tau*_*uri 8 android toolbar android-actionbar navigation-drawer

我用过如何使用DrawerLayout显示ActionBar/Toolbar和状态栏? 回答Suyash(我还添加了一个工具栏,可能不正确)将导航抽屉放在"操作栏"上.

对于API级别21而不是"操作栏"我使用了工具栏,它工作正常.

但对于API 19,这不起作用:

    if(Build.VERSION.SDK_INT > 19) {
      final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
        setSupportActionBar(toolbar);
    }
Run Code Online (Sandbox Code Playgroud)

您是否知道如何将NavigationDrawer放在API级别19的"操作栏"(或工具栏)上?

Joa*_*huk 7

如果您使用工具栏,那么您应该能够在任何API中查看完全相同的工具栏.

为此,您应该在res/layout中使用XML:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"/>
Run Code Online (Sandbox Code Playgroud)

在您的主要布局中,您应该包含它:

<include
    android:id="@+id/app_bar"
    layout="@layout/app_bar" />
Run Code Online (Sandbox Code Playgroud)

您还应该在styles.xml上将样式设置为No Action Bar

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="colorAccent">@color/accent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但对于API 21,您应该有另一个styles.xml:

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primaryDark</item>
    <item name="android:colorAccent">@color/accent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

最后在您的主要活动中

toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

最后,你要对工具栏做任何事情,获取它并像旧的Action Bar一样对待它:

getSupportActionBar().setHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)