DrawerLayoutを使用してActionBar /ツールバーの上とステータスバーの下に表示するにはどうすればよいですか? Suyashの回答(ツールバーも追加しましたが、間違っている可能性があります)を使用して、ナビゲーションドロワーを「アクションバー」の上に配置しました。
「アクションバー」の代わりにAPIレベル21の場合、ツールバーを使用しましたが、正常に機能します。
しかし、API 19の場合、これは機能しません。
if(Build.VERSION.SDK_INT > 19) {
final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
}
APIレベル19の「アクションバー」(またはツールバー)の上にNavigationDrawerを配置する方法を知っていますか?
ツールバーを使用する場合は、どの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);
すべてのテーマ(アクションバー/ツールバーが必要)は、Theme.AppCompatから継承する必要があります。 LightやNoActionBarなど、利用可能なバリアントがあります。
アクションバーに表示するもの(ツールバーのリストナビゲーション用のSpinnerAdapterなど)を膨らませるときは、getSupportActionBar()。getThemedContext()を介して取得したアクションバーのテーマコンテキストを使用してください。
AppCompatを使用すると、ツールバーにAndroid:themeを使用でき(以前使用していたapp:themeは非推奨になります)、さらに優れた点として、API 11以降のデバイスのすべてのビューにAndroid:themeのサポートが提供されます。
まず、com.Android.support:appcombat-v7:25.3.0を依存関係として追加する必要があります。次に、ツールバーを追加するアクティビティにAndroid.support.v7.widget.Toolbarをインポートします。このようにして、API19のツールバーを実装できます。
AndroidX
Androidサポートライブラリを使用したくない場合。この問題に対して現在利用可能な、より良い作業があります。
androidx.appcompat.widget.Toolbar
この公式リンクから入手できるAndroidXクラスマッピングへの移行
さらに、プロジェクト全体をAndroid Studio:メニューから実行できるからAndroidXに直接屈折させることもできます。
リファクタリング> AndroidXに移行
さらに、私にとって、Refractor> Migrate to AndroidX機能は、xml
のツールバーをAndroidXに変換しなかったので、以前のリンクが本当に役に立ちました。