Support v7 libraryに追加されて以来、ToolBar
を使用しています。そして、私はそれをうまく使ったと思います。しかし、理解できない点があります。なぜGoogleはそのようなウィジェットを作成するのですか?つまり、ToolBar
を使用してActionBar
でできることは何でもできます。なぜToolBar
を使用する必要があるのですか? ToolBar
があれば、ActionBar
の利点は何ですか? ActionBar
をToolBar
に置き換える必要がありますか?
どんなヒントでも大歓迎です。そして、事前に感謝します。
PS:ToolBar
はViewGroup
のデカダントであることがわかりました。それでは、どのようにToolBar
をLayout
のように使用できますか?誰かがそのコードを投稿できますか?
標準のtoolbar
は、アプリケーションコンテンツ内で使用するためのものです。
Toolbar
は、アプリケーションレイアウト内で使用するためのaction bar
sの一般化です。 action bar
は伝統的にActivity
によって制御されるframework
の不透明なwindow decor
の一部ですが、Toolbar
はビュー階層内のネストの任意のレベルに配置できます。アプリケーションは、setActionBar()
メソッドを使用して、Toolbar
をActivity
のaction bar
として指定することを選択できます。
Toolbar
は、ActionBar
よりも焦点を絞った機能セットをサポートします。最初から最後まで、toolbar
には次のオプション要素の組み合わせを含めることができます。
Up arrow
、ナビゲーションメニューの切り替え、閉じる、折りたたみ、完了、またはアプリが選択した別のグリフの場合があります。このボタンは、Toolbar
およびその意味のあるコンテンツのコンテナ内の他のナビゲーション目的地にアクセスするために常に使用するか、またはToolbar
によって意味する現在のコンテキストを残す必要があります。ナビゲーションボタンは、Toolbar
の最小の高さ(設定されている場合)内で垂直に配置されます。Toolbar
の現在の位置とそこに含まれるコンテンツの道標にする必要があります。 subtitle
は、存在する場合、現在のコンテンツに関する拡張情報を示す必要があります。アプリがlogo
image
を使用する場合、title
およびsubtitle
を省略することを強く検討する必要があります。Toolbar
に任意の子ビューを追加できます。レイアウト内のこの位置に表示されます。子ビューのToolbar
.LayoutParams
がGravity
値のCENTER_HORIZONTAL
を示す場合、ビューは他のすべての要素が測定された後、Toolbar
に残っている使用可能なスペース内で中央に配置しようとします。 。menu
は、Toolbar
の最後に固定され、追加のアクション用のオプションのoverflow menu
とともに、いくつかの頻繁な、重要または典型的なアクションを提供します。 Action
ボタンは、Toolbar
の最小の高さ(設定されている場合)内で垂直に配置されます。現代のAndroid
UIでは、開発者はアプリケーションアイコンよりもツールバーの視覚的に明確な配色に頼るべきです。 API 21以降のデバイスでは、アプリケーションアイコンとタイトルを標準レイアウトとして使用することはお勧めしません。
はい、ActionBarを新しいツールバーに置き換える必要があります。
理由
モダンに見え、新しい素材のデザインに従っています。
アクションバーとは異なり、ツールバーはウィンドウ装飾の一部ではありません。定義して、他のウィジェットと同じように配置します。したがって、親レイアウトのどこにでも自由に配置できます。
ウィジェットをツールバー内に自由に配置できます。
複数のツールバーを定義できます。
編集
つまり、ツールバー内に他のウィジェット(ビュー)を配置できます。
ツールバー用に別のレイアウトファイルを作成します(再利用性に適しています)。私の場合、ファイル名は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をツールバー内に配置しました
なぜAndroidはそのようなウィジェットを作成しますか?
Androidタブレット。
このタブレットはアプリを実行しています。そのアプリには、画面の右下隅にリッチテキストエディターがあり、ここでコメントを入力し、boldでフォーマットできます。 イタリックなど.
デスクトップまたはWebアプリでは、キーボードショートカットに加えて、これらの書式設定オプションの典型的なアプローチは、Stack Overflowの回答テキスト領域の上に表示されるツールバーのようなものです。
Toolbar
の前に、Android開発者は独自のツールバーを回転させるか、アクションバーにフォーマットアクションを配置する必要がありました。後者のアプローチは簡単ですが、負担がかかります前述の架空のアプリのユーザー。ユーザーは、ビジュアルフォーカスをエディター(画面の下部)からアクションバー(画面の上部)に切り替え続ける必要があります。
なぜToolBarを使用する必要があるのですか?
Toolbar
を使用する必要はありません。 〜300個のサンプルアプリ の一部として my book がありますが、現時点では、Toolbar
を使用するのは正確にゼロです。 Toolbar
に関する章をまだ書いていないので、ある時点でそれを修正する必要があります。
ActionBarをToolBarに置き換える必要がありますか?
いいえ。これを行う方法はありますが、必須ではありません。
ツールバーは標準のActionBarよりもはるかに柔軟性が高く、ツールバーにさらに多くのツールを追加して(ViewGroupを拡張するため)、マテリアルデザインガイドラインに従うことができます。
たとえば、ツールバーを使用すると、次のことができます。
通常のActionBarは、この方法で拡張することを意図していません。
また、アクティビティレイアウトxmlファイルに含めることができるため、ツールバーのコンテンツをより適切に操作できます。個人的には、LinearLayoutまたはRelativeLayoutを使用して、上部、ツールバー、および下部に残りのスペースを埋め、フラグメントを追加するFrameLayoutを配置します。
最後に、レイアウトファイルに設定するときに、ツールバーを好きな場所に配置できます。
UPDATE:
Googleがリリースした Android Design Support Library 。拡張Appbarを取得する推奨方法は、Toolbar
でAppBarLayout
をラップし、TabLayout
などのビューを追加することです。このスクリーンショットのようにツールバーでFABを取得するには、CoordinatorLayout
を使用してレイアウトコンテンツをラップし、FABでアンカー属性を使用できます。
なぜ
ToolBar
を使用する必要があるのですか?
ツールバーは、以前のサポートライブラリでは提供されていなかったプリデバイスおよびバックポートの互換性のために使用されます。 ActionbarSherlock
、Androidは、低レベルAPIデバイスのアクションバーをサポートするために独自に作成したことを思い出してください。
ToolBar
があれば、ActionBar
の利点は何ですか?
相対レイアウトビュー、特にカスタムタイトルとアニメーション付きアイコンのようなツールバーのXMLでカスタムビューを簡単に追加できます。古い従来のアクションバーではなく、ツールバーをより詳細に制御できます。
ActionBar
をToolBar
に置き換える必要がありますか?
2.0未満のデバイスでアクションバーをサポートする場合は、はい、アクションバーのバックポート互換性が必要です。
ツールバーは、アプリケーションレイアウト内で使用するアクションバーの一般化です。アクションバーは従来、フレームワークによって制御されるアクティビティの不透明なウィンドウ装飾の一部ですが、ツールバーはビュー階層内の任意のネストレベルに配置できます。アプリケーションは、setActionBar()メソッドを使用して、ツールバーをアクティビティのアクションバーとして指定することもできます。より多くの情報を見つけることができます こちら 。マテリアルデザインのツールバーをカスタマイズする方が簡単だったため、アクションバーを置き換えました。たとえば、カラーパレットと消えるアニメーションの動作。個人的には、なぜAndroidが古いコントロールを捨てて新しいコントロールを作成するのか理解できません。別の例としては、RecyclerViewがあります。
注:両方とも、一般的なアプリのナビゲーション、アイコンをサポートし、後方サポートを備えています。
答えは、デザインが求めるユーザーインタラクション(アニメーションツールバー)によって異なります。つまり、ツールバーにアニメーションを実装してマテリアルにする必要があります。
単にアイコンをホストできる静的なバーが必要な場合は、戻るボタンとテーマを設定できます。
アニメーションなどの静的なバーを超えて何かをしたい場合。
一般的な実装とGoogleの設計上の推奨事項は、スクロール時にツールバーを非表示にすることです。 マテリアルデザインチェックリスト:スクロール時にアプリバーを非表示にしますか?
はい
Toolbar
のサポートにより、追加のコストを実質的に追加することなく、柔軟性と自由度が大幅に向上するため、移行しない理由はありません。新しいToolbar
への移行は、タスクの単純さと、アプリの全体的なルックアンドフィールに即座に影響するため、既存のアプリをよりマテリアルデザインに移植するための最初のステップの1つです。 。
ここにドキュメントのリンクがあります- http://developer.Android.com/training/appbar/setting-up.html
他のレイアウトファイルに含めるコードは含まれていないことに注意してください。
<include
Android:id="@+id/toolbar"
layout="@layout/tool_bar"/>
ツールバーに変更した理由-最近のアプリをツールバーに変更した理由の1つは、アクションバーをカスタマイズするときに、異なるバージョンで動作しないAndroid=特定のクラスを拡張しました(透明にするか、アプリ名の代わりにアイコンを表示します)。ツールバーにより、必要なカスタマイズオプションが可能になりました。