Android API 19 的工具栏? (对于 API 21 工作正常)
Android Toolbar for API 19? (for API 21 works ok)
我用过How do I use DrawerLayout to display over the ActionBar/Toolbar and under the status bar?
Suyash 的答案(我还添加了一个工具栏,可能不正确)将导航抽屉放在 "action bar".
上
对于 API 级别 21 而不是 "action bar" 我使用了工具栏,它工作正常。
但是对于 API 19 这不起作用:
if(Build.VERSION.SDK_INT > 19) {
final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
}
您知道如何在 API 级别 19 时将 NavigationDrawer 放在 "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"/>
并且在你的主要布局中你应该包括它:
<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>
最后在您的 Main Activity
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
最后,对于您想对工具栏执行的任何操作,获取它并像对待旧的 Action Bar 一样对待它:
getSupportActionBar().setHomeAsUpEnabled(true);
Material Design for Pre-Lollipop Devices :
All of your themes (that want an Action Bar/Toolbar) must inherit
from Theme.AppCompat. There are variants available, including Light
and NoActionBar.
When inflating anything to be displayed on the action
bar (such as a SpinnerAdapter for list navigation in the toolbar),
make sure you use the action bar’s themed context, retrieved via
getSupportActionBar().getThemedContext().
Android Support Library 22.1 :
AppCompat allows you to use android:theme for Toolbars (deprecating
the app:theme used previously) and, even better, brings android:theme
support to all views on API 11+ devices.
首先,您需要添加 com.android.support:appcombat-v7:25.3.0 作为依赖项。然后导入android.support.v7.widget.Toolbar到你要添加工具栏的activity。通过这种方式,您可以实现 api 19 .
的工具栏
AndroidX
如果您不想使用 android 支持库。现在有一个更好的解决这个问题的方法
androidx.appcompat.widget.Toolbar
Migrating to AndroidX Class Mappings available through this official link
此外,您还可以直接从 Android Studio 将整个项目折射到 AndroidX:
从菜单你可以做
重构 > 迁移到 AndroidX
此外,对我来说 Refractor > Migrate to AndroidX 功能没有将我在 xml
中的工具栏转换为 AndroidX 所以,我发现以前的 link 真的有帮助。
我用过How do I use DrawerLayout to display over the ActionBar/Toolbar and under the status bar? Suyash 的答案(我还添加了一个工具栏,可能不正确)将导航抽屉放在 "action bar".
上对于 API 级别 21 而不是 "action bar" 我使用了工具栏,它工作正常。
但是对于 API 19 这不起作用:
if(Build.VERSION.SDK_INT > 19) {
final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
}
您知道如何在 API 级别 19 时将 NavigationDrawer 放在 "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"/>
并且在你的主要布局中你应该包括它:
<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>
最后在您的 Main Activity
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
最后,对于您想对工具栏执行的任何操作,获取它并像对待旧的 Action Bar 一样对待它:
getSupportActionBar().setHomeAsUpEnabled(true);
Material Design for Pre-Lollipop Devices :
All of your themes (that want an Action Bar/Toolbar) must inherit from Theme.AppCompat. There are variants available, including Light and NoActionBar.
When inflating anything to be displayed on the action bar (such as a SpinnerAdapter for list navigation in the toolbar), make sure you use the action bar’s themed context, retrieved via getSupportActionBar().getThemedContext().
Android Support Library 22.1 :
AppCompat allows you to use android:theme for Toolbars (deprecating the app:theme used previously) and, even better, brings android:theme support to all views on API 11+ devices.
首先,您需要添加 com.android.support:appcombat-v7:25.3.0 作为依赖项。然后导入android.support.v7.widget.Toolbar到你要添加工具栏的activity。通过这种方式,您可以实现 api 19 .
的工具栏AndroidX
如果您不想使用 android 支持库。现在有一个更好的解决这个问题的方法
androidx.appcompat.widget.Toolbar
Migrating to AndroidX Class Mappings available through this official link
此外,您还可以直接从 Android Studio 将整个项目折射到 AndroidX:
从菜单你可以做
重构 > 迁移到 AndroidX
此外,对我来说 Refractor > Migrate to AndroidX 功能没有将我在 xml
中的工具栏转换为 AndroidX 所以,我发现以前的 link 真的有帮助。