Material Design適応時に標準外のことをしようとした時のメモ
情報整理メモ。随時追加予定
ネットやASのProject Wizardで生成されるテンプレ-ト外のことをやりたかった情報を整理する
Toolbarでbackボタンを実現する
backボタンのリソースを別途用意していないけど、ちょっとしたbackボタンを実現したい場合
AppCompatでToolBarが実装されている場合、後ろ矢印をそのまま流用したいということがある
実装イメージ
//ToolBarを表示 Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); //矢印の表示だけ表示 getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); //バック処理の実装 mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } });
ただ、問題としては
PreferenceActivityみたいなのに 上記のバックボタンを導入したい場合
- レイアウト上にToolbarを設置するだけではなく
- AppCompatActivityの継承が必要
- ただレイアウト上に NavigationDrawerは不要
あたりになるのかなと。
みたいなお話がありますけど、実際はどうなんだろうな・・
混乱した不要な情報
stackOverFlow辺りでググると
mToolbar.setNavigationIcon(R.drawable.ic_back_arrow);
あたりのバックキー画像設定しろやみたいな情報が出てくるんだけど
これ標準同梱されてないよね?? android.R.XX系でないの?? とか凄い悩んでしまったので、
不必要だということでメモっておく
SnackBarを上部に出したい
やりたかったこと
PokemonGoみたいに「GPS探してます」のような上位にSnackBarを出したかった
できなかったこと
- ToolBarの下にSnackBarを表示
- その場で消える
- なぜか上部に抜けて消えていくアニメーション効果が適応されてしまう。。。
- このアニメ効果置き換える方法ないんだろうか。。
調べたメモ
なお話で
Snackbar snack = Snackbar.make(parentLayout, str, Snackbar.LENGTH_LONG); View view = snack.getView(); FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams(); params.gravity = Gravity.TOP; view.setLayoutParams(params); snack.show();
parentLayout は何のViewでもよくて、これがToolBarでもOKなわけです。
特にToolBar等がない場合は、
findViewById(android.R.id.content)
とか、かならず画面上にあるidを指定すればいいだけのようですが*1
勿論AlertDialog/Toastと同じように
と同じくカスタマイズは可能。アンカー有りToastというイメージが正しいかも。
*1:もちろんレイアウト上のNavigationDrawerとかのid指定してもOK