web-dev-qa-db-ja.com

Android API 19のツールバー?(API 21の場合は問題なく動作します)

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を配置する方法を知っていますか?

8
tauri

ツールバーを使用する場合は、どの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);
7
Joaquin Iurchuk

ロリポップ前のデバイスのマテリアルデザイン

すべてのテーマ(アクションバー/ツールバーが必要)は、Theme.AppCompatから継承する必要があります。 LightやNoActionBarなど、利用可能なバリアントがあります。

アクションバーに表示するもの(ツールバーのリストナビゲーション用のSpinnerAdapterなど)を膨らませるときは、getSupportActionBar()。getThemedContext()を介して取得したアクションバーのテーマコンテキストを使用してください。


Androidサポートライブラリ22.1

AppCompatを使用すると、ツールバーにAndroid:themeを使用でき(以前使用していたapp:themeは非推奨になります)、さらに優れた点として、API 11以降のデバイスのすべてのビューにAndroid:themeのサポートが提供されます。

4
Amit Vaghela

まず、com.Android.support:appcombat-v7:25.3.0を依存関係として追加する必要があります。次に、ツールバーを追加するアクティビティにAndroid.support.v7.widget.Toolbarをインポートします。このようにして、API19のツールバーを実装できます。

1
Onur OKYAY

AndroidX

Androidサポートライブラリを使用したくない場合。この問題に対して現在利用可能な、より良い作業があります。

androidx.appcompat.widget.Toolbar

この公式リンクから入手できるAndroidXクラスマッピングへの移行

さらに、プロジェクト全体をAndroid Studio:メニューから実行できるからAndroidXに直接屈折させることもできます。
リファクタリング> AndroidXに移行

詳細はこちら

さらに、私にとって、Refractor> Migrate to AndroidX機能は、xmlのツールバーをAndroidXに変換しなかったので、以前のリンクが本当に役に立ちました。

1
Pradeep Singh