API 19的Android工具栏?(适用于API 21工程正常)
我曾经 Suyash的回答(我还添加了一个工具栏,可能是错误的),将导航抽屉放在“操作栏”上 对于API级别21而不是“操作栏”,我使用了工具栏,它工作得很好 但对于API 19,这不起作用: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
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);