web-dev-qa-db-ja.com

アクションバーをツールバーに置き換える必要がありますか?

Support v7 libraryに追加されて以来、ToolBarを使用しています。そして、私はそれをうまく使ったと思います。しかし、理解できない点があります。なぜGoogleはそのようなウィジェットを作成するのですか?つまり、ToolBarを使用してActionBarでできることは何でもできます。なぜToolBarを使用する必要があるのですか? ToolBarがあれば、ActionBarの利点は何ですか? ActionBarToolBarに置き換える必要がありますか?

どんなヒントでも大歓迎です。そして、事前に感謝します。

PS:ToolBarViewGroupのデカダントであることがわかりました。それでは、どのようにToolBarLayoutのように使用できますか?誰かがそのコードを投稿できますか?

56
SilentKnight

標準のtoolbarは、アプリケーションコンテンツ内で使用するためのものです。

Toolbarは、アプリケーションレイアウト内で使用するためのaction barsの一般化です。 action barは伝統的にActivityによって制御されるframeworkの不透明なwindow decorの一部ですが、Toolbarはビュー階層内のネストの任意のレベルに配置できます。アプリケーションは、setActionBar()メソッドを使用して、ToolbarActivityaction barとして指定することを選択できます。

Toolbarは、ActionBarよりも焦点を絞った機能セットをサポートします。最初から最後まで、toolbarには次のオプション要素の組み合わせを含めることができます。

  • ナビゲーションボタン。これは、Up arrow、ナビゲーションメニューの切り替え、閉じる、折りたたみ、完了、またはアプリが選択した別のグリフの場合があります。このボタンは、Toolbarおよびその意味のあるコンテンツのコンテナ内の他のナビゲーション目的地にアクセスするために常に使用するか、またはToolbarによって意味する現在のコンテキストを残す必要があります。ナビゲーションボタンは、Toolbarの最小の高さ(設定されている場合)内で垂直に配置されます。
  • ブランドロゴ画像。これはバーの高さまで拡張でき、任意の幅にすることができます。
  • タイトルとサブタイトル。タイトルは、ナビゲーション階層内のToolbarの現在の位置とそこに含まれるコンテンツの道標にする必要があります。 subtitleは、存在する場合、現在のコンテンツに関する拡張情報を示す必要があります。アプリがlogoimageを使用する場合、titleおよびsubtitleを省略することを強く検討する必要があります。
  • 1つ以上のカスタムビュー。アプリケーションは、Toolbarに任意の子ビューを追加できます。レイアウト内のこの位置に表示されます。子ビューのToolbar.LayoutParamsGravity値のCENTER_HORIZONTALを示す場合、ビューは他のすべての要素が測定された後、Toolbarに残っている使用可能なスペース内で中央に配置しようとします。 。
  • アクションメニュー。アクションのmenuは、Toolbarの最後に固定され、追加のアクション用のオプションのoverflow menuとともに、いくつかの頻繁な、重要または典型的なアクションを提供します。 Actionボタンは、Toolbarの最小の高さ(設定されている場合)内で垂直に配置されます。

現代のAndroid UIでは、開発者はアプリケーションアイコンよりもツールバーの視覚的に明確な配色に頼るべきです。 API 21以降のデバイスでは、アプリケーションアイコンとタイトルを標準レイアウトとして使用することはお勧めしません。

8
SilentKnight

はい、ActionBarを新しいツールバーに置き換える必要があります。

理由

  1. モダンに見え、新しい素材のデザインに従っています。

  2. アクションバーとは異なり、ツールバーはウィンドウ装飾の一部ではありません。定義して、他のウィジェットと同じように配置します。したがって、親レイアウトのどこにでも自由に配置できます。

  3. ウィジェットをツールバー内に自由に配置できます。

  4. 複数のツールバーを定義できます。

編集

つまり、ツールバー内に他のウィジェット(ビュー)を配置できます。

ツールバー用に別のレイアウトファイルを作成します(再利用性に適しています)。私の場合、ファイル名はmain_toolbar.xmlです

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:App="http://schemas.Android.com/apk/res-auto"
    xmlns:segmentedgroup="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    App:theme="@style/ToolbarColoredBackArrow"
    Android:layout_height="56dp"
    Android:background="@color/primary_color" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:textSize="@dimen/drawer_fntsize"
        Android:text="Title"
        Android:id="@+id/lbl_title"
        Android:textColor="@color/title_text_color"
        Android:layout_gravity="center" />

 </Android.support.v7.widget.Toolbar>

次に、このツールバーをこのようにメインレイアウトに含めます

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <include
        Android:id="@+id/toolbar"
        layout="@layout/main_toolbar" />

    <FrameLayout
        Android:id="@+id/content_frame"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_below="@+id/toolbar" />

</RelativeLayout>

この例でわかるように、TextViewをツールバー内に配置しました

33
Shane Ekanayake

なぜAndroidはそのようなウィジェットを作成しますか?

Androidタブレット。

このタブレットはアプリを実行しています。そのアプリには、画面の右下隅にリッチテキストエディターがあり、ここでコメントを入力し、boldでフォーマットできます。 イタリックなど.

デスクトップまたはWebアプリでは、キーボードショートカットに加えて、これらの書式設定オプションの典型的なアプローチは、Stack Overflowの回答テキスト領域の上に表示されるツールバーのようなものです。

Toolbarの前に、Android開発者は独自のツールバーを回転させるか、アクションバーにフォーマットアクションを配置する必要がありました。後者のアプローチは簡単ですが、負担がかかります前述の架空のアプリのユーザー。ユーザーは、ビジュアルフォーカスをエディター(画面の下部)からアクションバー(画面の上部)に切り替え続ける必要があります。

なぜToolBarを使用する必要があるのですか?

Toolbarを使用する必要はありません。 〜300個のサンプルアプリ の一部として my book がありますが、現時点では、Toolbarを使用するのは正確にゼロです。 Toolbarに関する章をまだ書いていないので、ある時点でそれを修正する必要があります。

ActionBarをToolBarに置き換える必要がありますか?

いいえ。これを行う方法はありますが、必須ではありません。

22
CommonsWare

ツールバーは標準のActionBarよりもはるかに柔軟性が高く、ツールバーにさらに多くのツールを追加して(ViewGroupを拡張するため)、マテリアルデザインガイドラインに従うことができます。

たとえば、ツールバーを使用すると、次のことができます。

My Files with big toolbar

通常のActionBarは、この方法で拡張することを意図していません。

また、アクティビティレイアウトxmlファイルに含めることができるため、ツールバーのコンテンツをより適切に操作できます。個人的には、LinearLayoutまたはRelativeLayoutを使用して、上部、ツールバー、および下部に残りのスペースを埋め、フラグメントを追加するFrameLayoutを配置します。

最後に、レイアウトファイルに設定するときに、ツールバーを好きな場所に配置できます。

UPDATE:

Googleがリリースした Android Design Support Library 。拡張Appbarを取得する推奨方法は、ToolbarAppBarLayoutをラップし、TabLayoutなどのビューを追加することです。このスクリーンショットのようにツールバーでFABを取得するには、CoordinatorLayoutを使用してレイアウトコンテンツをラップし、FABでアンカー属性を使用できます。

17
Louis CAD
  1. ツールバーを簡単にカスタマイズできます。
  2. ツールバー内に多くのウィジェットを追加できます。
  3. ビューに多くのツールバーを追加できます。
  4. 親レイアウトのどこにでも自由に配置できます。
  5. 子ビューの独自の処理/管理があります。
5
Haris Qureshi

なぜToolBarを使用する必要があるのですか?

ツールバーは、以前のサポートライブラリでは提供されていなかったプリデバイスおよびバックポートの互換性のために使用されます。 ActionbarSherlock、Androidは、低レベルAPIデバイスのアクションバーをサポートするために独自に作成したことを思い出してください。

ToolBarがあれば、ActionBarの利点は何ですか?

相対レイアウトビュー、特にカスタムタイトルとアニメーション付きアイコンのようなツールバーのXMLでカスタムビューを簡単に追加できます。古い従来のアクションバーではなく、ツールバーをより詳細に制御できます。

ActionBarToolBarに置き換える必要がありますか?

2.0未満のデバイスでアクションバーをサポートする場合は、はい、アクションバーのバックポート互換性が必要です。

5
Rod_Algonquin

ツールバーは、アプリケーションレイアウト内で使用するアクションバーの一般化です。アクションバーは従来、フレームワークによって制御されるアクティビティの不透明なウィンドウ装飾の一部ですが、ツールバーはビュー階層内の任意のネストレベルに配置できます。アプリケーションは、setActionBar()メソッドを使用して、ツールバーをアクティビティのアクションバーとして指定することもできます。より多くの情報を見つけることができます こちら 。マテリアルデザインのツールバーをカスタマイズする方が簡単だったため、アクションバーを置き換えました。たとえば、カラーパレットと消えるアニメーションの動作。個人的には、なぜAndroidが古いコントロールを捨てて新しいコントロールを作成するのか理解できません。別の例としては、RecyclerViewがあります。

4
Access Denied

:両方とも、一般的なアプリのナビゲーション、アイコンをサポートし、後方サポートを備えています。

答えは、デザインが求めるユーザーインタラクション(アニメーションツールバー)によって異なります。つまり、ツールバーにアニメーションを実装してマテリアルにする必要があります。


ActionBar:

単にアイコンをホストできる静的なバーが必要な場合は、戻るボタンとテーマを設定できます。

ツールバー:

アニメーションなどの静的なバーを超えて何かをしたい場合。

一般的な実装とGoogleの設計上の推奨事項は、スクロール時にツールバーを非表示にすることです。 マテリアルデザインチェックリスト:スクロール時にアプリバーを非表示にしますか?

4
toidiu

はい

Toolbarのサポートにより、追加のコストを実質的に追加することなく、柔軟性と自由度が大幅に向上するため、移行しない理由はありません。新しいToolbarへの移行は、タスクの単純さと、アプリの全体的なルックアンドフィールに即座に影響するため、既存のアプリをよりマテリアルデザインに移植するための最初のステップの1つです。 。

1
memoizr

ここにドキュメントのリンクがあります- http://developer.Android.com/training/appbar/setting-up.html

他のレイアウトファイルに含めるコードは含まれていないことに注意してください。

<include
    Android:id="@+id/toolbar"
    layout="@layout/tool_bar"/>

ツールバーに変更した理由-最近のアプリをツールバーに変更した理由の1つは、アクションバーをカスタマイズするときに、異なるバージョンで動作しないAndroid=特定のクラスを拡張しました(透明にするか、アプリ名の代わりにアイコンを表示します)。ツールバーにより、必要なカスタマイズオプションが可能になりました。

0
Cash LeBrun