Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
API 19的Android工具栏?(适用于API 21工程正常)_Android_Android Actionbar_Navigation Drawer_Toolbar - Fatal编程技术网

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

API 19的Android工具栏?(适用于API 21工程正常),android,android-actionbar,navigation-drawer,toolbar,Android,Android Actionbar,Navigation Drawer,Toolbar,我曾经 Suyash的回答(我还添加了一个工具栏,可能是错误的),将导航抽屉放在“操作栏”上 对于API级别21而不是“操作栏”,我使用了工具栏,它工作得很好 但对于API 19,这不起作用: if(Build.VERSION.SDK_INT > 19) { final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolba

我曾经 Suyash的回答(我还添加了一个工具栏,可能是错误的),将导航抽屉放在“操作栏”上

对于API级别21而不是“操作栏”,我使用了工具栏,它工作得很好

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

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

您知道如何将NavigationDrawer置于API级别19的“actionbar”(或工具栏)之上吗?

如果您使用工具栏,那么您应该能够在任何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"/>
最后,对于要对工具栏执行的任何操作,请获取它并将其视为旧的操作栏:

getSupportActionBar().setHomeAsUpEnabled(true);

所有主题(需要操作栏/工具栏)都必须继承 来自Theme.AppCompat。有多种型号可供选择,包括灯光 还有酒吧

在对要在操作面板上显示的任何内容进行充气时 工具栏(例如用于工具栏中列表导航的SpinnerAdapter), 确保使用操作栏的主题上下文,通过 getSupportActionBar().getThemedContext()


AppCompat允许您使用android:theme作为工具栏(不推荐使用) app:theme(以前使用过)甚至更好地带来了android:theme 支持API 11+设备上的所有视图


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

AndroidX

如果您不想使用android支持库。这里有一个更好的解决这个问题的方法

androidx.appcompat.widget.Toolbar

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


此外,对我来说,折射器>迁移到AndroidX功能并没有将
xml
中的工具栏转换为AndroidX,所以我发现前面的链接非常有用

在我添加工具栏之前,在Suyash的解决方案中,它看起来就像:hideActionBar+android:windowTranslucentStatus。对于api21,出现了动作条,对于api19,除了变灰之外,没有任何变化。我做错了什么吗?将API 21上的主题从AppCompat更改为其他主题是不必要的(实际上破坏了
ActionBarActivity
的许多主题)。谢谢您的帮助。“看来我没有添加到styles.xml中。”joaquin说。我在项目中使用AppCompat工具栏(如您所说)。但是对于较低的API(低于20),我的应用程序已经停止。为什么?@MinaDahesh你能提供一些有用的数据吗?就像你得到的异常一样。@MinaDahesh那是因为我确信你没有以正确的方式配置
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>
<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);