開発者向けのAndroid M Previewが昨日リリースされました。いつものように、多くの驚くべき新機能が導入されています。 Snackbar
もその1つであることに気付きました。
Snackbar
に関するドキュメントを読みましたが、そこからSnackbarがAndroid Design Support Libraryの絶対パスが Android.support.design.widget.Snackbar
。
そして文書はそれを言います:
スナックバーは、操作に関する簡単なフィードバックを提供します。モバイルでは画面の下部に、大きなデバイスでは左下に短いメッセージが表示されます。スナックバーは画面上の他のすべての要素の上に表示され、一度に1つしか表示できません。
それらは、タイムアウト後、または画面上の他の場所でのユーザー操作の後、特に新しいサーフェスまたはアクティビティを呼び出す操作の後、自動的に消えます。スナックバーは画面外にスワイプできます。
それで、Snackbar
はToast
またはDialog
のように振る舞いますか? Snackbarsはレイアウトファイルで使用できますか?プログラムでどのように使用できますか?
P.S.:
Snackbar
に関しては、Toast
のように動作しますが、Toast
とは異なります。 スナックバーは画面の下部に表示され、オプションの単一アクションを含むテキストが含まれます。画面をアニメートすることで、指定された時間の後に自動的にタイムアウトします。さらに、ユーザーはタイムアウト前にそれらをスワイプすることができます。これは別の軽量フィードバックメカニズムであるトーストよりもかなり強力です。
次のようにプログラムで使用できます。
Snackbar snackbar = Snackbar
.make(parentLayout, R.string.snackbar_text, Snackbar.LENGTH_LONG)
.setAction(R.string.snackbar_action, myOnClickListener);
snackbar.setActionTextColor(Color.CYAN);
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(Color.YELLOW);//change Snackbar's background color;
TextView textView = (TextView)snackbarView .findViewById(Android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.BLUE);//change Snackbar's text color;
snackbar.show(); // Don’t forget to show!
make()
のメソッドでのビューの使用に注意してください-Snackbar
は、ビューの下部に固定されていることを確認しようとします。
さらに、-Android Design Support LibraryはAndroid 2.1+(API 7 +)に使用されます-ナビゲーションドロワービュー、テキストを編集するためのフローティングラベル、フローティングアクションボタン、スナックバー、タブなど.
ナビゲーションビュー
ナビゲーションドロワーは、アプリ内でのIDとナビゲーションの重要な焦点となり、ここでのデザインの一貫性は、特に初めてのユーザーにとって、アプリのナビゲートの容易さを大きく変えることができます。 NavigationView
は、ナビゲーションドロワーに必要なフレームワークを提供するだけでなく、メニューリソースを通じてナビゲーションアイテムを膨らませる機能を提供することにより、これを容易にします。
次のように使用できます。
<Android.support.v4.widget.DrawerLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true">
<!-- your content layout -->
<Android.support.design.widget.NavigationView
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer"/>
</Android.support.v4.widget.DrawerLayout>
引き出しメニューについては、次のとおりです。
<group Android:checkableBehavior="single">
<item
Android:id="@+id/navigation_item_1"
Android:checked="true"
Android:icon="@drawable/ic_Android"
Android:title="@string/navigation_item_1"/>
<item
Android:id="@+id/navigation_item_2"
Android:icon="@drawable/ic_Android"
Android:title="@string/navigation_item_2"/>
</group>
または:
<item
Android:id="@+id/navigation_subheader"
Android:title="@string/navigation_subheader">
<menu>
<item
Android:id="@+id/navigation_sub_item_1"
Android:icon="@drawable/ic_Android"
Android:title="@string/navigation_sub_item_1"/>
<item
Android:id="@+id/navigation_sub_item_2"
Android:icon="@drawable/ic_Android"
Android:title="@string/navigation_sub_item_2"/>
</menu>
</item>
SetNavigationItemSelectedListener()を使用してOnNavigationItemSelectedListenerを設定することにより、選択したアイテムのコールバックを取得します。これにより、クリックされたMenuItemが提供され、選択イベントの処理、チェックステータスの変更、新しいコンテンツのロード、ドロワーのプログラムによるクローズ、またはその他の必要なアクションが可能になります。
テキスト編集用のフローティングラベル
謙虚なEditText
でさえ、材料設計を改善する余地があります。 EditText
のみでは、最初の文字が入力された後にヒントテキストが非表示になりますが、TextInputLayout
にラップして、ヒントテキストをフローティングにすることができます。 EditText
の上にあるlabel。ユーザーが入力内容のコンテキストを失わないようにします。ヒントを表示するだけでなく、setError()
を呼び出すことで、EditText
の下にエラーメッセージを表示することもできます。
フローティングアクションボタン
フローティングアクションボタンは、インターフェースの主要なアクションを示す丸いボタンです。デザインライブラリのFloatingActionButton
は、デフォルトでテーマのcolorAccent
を使用して色付けされた単一の一貫した実装を提供します。
FloatingActionButton
はImageView
を拡張するため、Android:src
またはsetImageDrawable()
などのメソッドのいずれかを使用して、FloatingActionButton
内に表示されるアイコンを制御します。
タブ
トップレベルのナビゲーションパターンは、コンテンツのさまざまなグループを整理するために一般的に使用されます。デザインライブラリのTabLayout
は、ビューの幅がすべてのタブで均等に分割される固定タブと、タブが一定のサイズではなく水平にスクロールできるスクロール可能なタブの両方を実装します。
タブはプログラムで追加できます。
TabLayout tabLayout = ...;
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
タブ間の水平ページングにViewPager
を使用する場合は、PagerAdapter’s
getPageTitle()
から直接タブを作成し、setupWithViewPager()
を使用して2つを接続できます。これにより、タブ選択イベントによりViewPager
が更新され、ページ変更により選択したタブが更新されます。
CoordinatorLayoutとアプリバー
designライブラリーはCoordinatorLayout
を導入します。これは、Designライブラリーの多くのコンポーネントが利用する、子ビュー間のタッチイベントをさらに制御するレベルを提供します。 AppBarLayoutを使用しようとすると、Toolbar
およびその他のビュー(TabLayout
で提供されるタブなど)がScrollingViewBehaviorでマークされた兄弟ビューのスクロールイベントに反応することができます。したがって、次のようなレイアウトを作成できます。
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<! -- Your Scrollable View -->
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.Toolbar
...
app:layout_scrollFlags="scroll|enterAlways">
<Android.support.design.widget.TabLayout
...
app:layout_scrollFlags="scroll|enterAlways">
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
ユーザーがRecyclerView
をスクロールすると、AppBarLayout
はこれらのイベントに応答して、子のスクロールフラグを使用して、入力(画面でスクロール)および終了(画面でスクロール)を制御できます。
デザインライブラリ、AppCompat、およびすべてのAndroidサポートライブラリは、モダンで見栄えの良いAndroidアプリを構築するために必要なビルディングブロックを提供する重要なツールですすべてをゼロから構築します。
新しい Snackbar
Android-Mを必要としない。
新しいデザインサポートライブラリ内にあり、今日使用できます。
SDKを更新するだけで、この依存関係をコードに追加できます。
compile 'com.Android.support:design:22.2.0'
次のようなコードを使用できます。
Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG)
.setAction("Action", null)
.show();
トーストのようなものです。
アクションを割り当てるには、OnClickListener
を設定する必要があります。
Snackbar.make(view, "Here's a Snackbar", Snackbar.LENGTH_LONG)
.setAction("Action", myOnClickListener)
.show();
背景を変更色にしたい場合は、次のようなものを使用できます。
Snackbar snackbar = Snackbar.make(view, "Here's a Snackbar",
Snackbar.LENGTH_LONG);
View snackBarView = snackbar.getView();
snackBarView.setBackgroundColor(colorId);
snackbar.show();
swipe-to-dismissジェスチャー、またはFAB scrollingをスナックバーの上に移動して、単に CoordinatorLayout
ビュー階層内。
Activity
では次を使用できます。
String s = "SnackBar"
Snackbar.make(findViewById(Android.R.id.content), s, Snackbar.LENGTH_LONG).show();
およびFragment
:
Snackbar.make(getView(), s, Snackbar.LENGTH_LONG).show();
編集:
背景色を変更するには、次のようなものを使用します。
String s = "SnackBar"
Snackbar snack = Snackbar.make(getView(), s, Snackbar.LENGTH_LONG);
View view = snack.getView();
view.setBackgroundColor(Color.YELLOW);
snack.show();
(テーマに関係なく)テキストの色を変更する場合:
View view = snack.getView();
TextView tv = (TextView) view.findViewById(Android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);
チャームのように動作します;-)
コーディングを設定しました
Snackbar snackbar = Snackbar
.make(getView(), text, Snackbar.LENGTH_INDEFINITE);
View sbView = Global.alert.getView();
sbView.setBackgroundColor(0xFF000000);
TextView textView = (TextView) sbView.findViewById(Android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.WHITE);
textView.setTextSize(30);
Global.alert.show();
http://Android-developers.blogspot.in/2015/05/Android-design-support-library.html ?
サポートライブラリ全体を要約しています。
スナックバーはアイコンも表示できます。
例:ネットワークがない場合、このようなスナックバーを表示できます(Gmailと同じように)。
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(" ").setSpan(new ImageSpan(this, R.drawable.snackbar_icon), 0, 1, 0);
builder.append(" No Network Available");
Snackbar snackBar = Snackbar.make(findViewById(R.id.co_ordinate), builder, Snackbar.LENGTH_LONG);
snackBar.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View v) { //Retry Code here
}
});
snackBar.show();
スナックバーのテキストの色と背景を変更することもできます
Snackbar snackbar = Snackbar.make(view, "Text",
Snackbar.LENGTH_LONG);
View snackBarView = snackbar.getView();
TextView tv = (TextView) snackBarView.findViewById(Android.support.design.R.id.snackbar_text);
tv.setTextColor(ContextCompat.getColor(MainActivity.this, R.color.colorAccent));
snackBarView.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.colorPrimaryDark));
snackbar.show();