我使用了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?
答案 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
此外,对于我来说,折射器>迁移到AndroidX功能没有将xml
中的工具栏转换为AndroidX,因此,我发现以前的链接确实很有用。