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

时间:2015-03-14 23:30:18

标签: android android-actionbar navigation-drawer toolbar

我使用了How do I use DrawerLayout to display over the ActionBar/Toolbar and under the status bar? 回答Suyash(我还添加了一个工具栏,可能不正确)将导航抽屉放在"操作栏上#34;。

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

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

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

你知道我怎么能把NavigationDrawer放在" actionbar" (或工具栏)API级别19?

4 个答案:

答案 0 :(得分: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"/>

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

<include
    android:id="@+id/app_bar"
    layout="@layout/app_bar" />

此外,您应该在styles.xml上将样式设置为无操作栏

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

但是对于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>

最后在你的主要活动中

toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);

最后要对工具栏进行任何操作,获取它并将其视为旧操作栏:

getSupportActionBar().setHomeAsUpEnabled(true);

答案 1 :(得分:4)

Material Design for Pre-Lollipop Devices

  

您的所有主题(需要操作栏/工具栏)都必须继承   来自Theme.AppCompat。有可用的变种,包括光   和NoActionBar。

     

在充气时要在动作上显示任何内容   栏(例如工具栏中的列表导航的SpinnerAdapter),   确保使用操作栏的主题上下文,通过检索   getSupportActionBar()。getThemedContext()。

Android Support Library 22.1

  

AppCompat允许您对工具栏使用android:theme(弃用   应用程序:以前使用的主题),甚至更好,带来android:主题   支持API 11+设备上的所有视图。

答案 2 :(得分:1)

首先,您需要添加com.android.support:appcombat-v7:25.3.0作为依赖项。然后将android.support.v7.widget.Toolbar导入要添加工具栏的活动。通过这种方式,您可以实现api 19的工具栏。

答案 3 :(得分:1)

AndroidX

如果您不想使用android支持库。现在可以通过更好的方法解决此问题

androidx.appcompat.widget.Toolbar

Migrating to AndroidX Class Mappings available through this official link

此外,您还可以将整个项目直接从Android Studio折射到AndroidX: 您可以从菜单中进行
重构>迁移到AndroidX

More information here

此外,对于我来说,折射器>迁移到AndroidX功能没有将xml中的工具栏转换为AndroidX,因此,我发现以前的链接确实很有用。