Nougatでまた通知のレイアウト変わりました。

ちっこいアイコン+アプリ名とかもろもろがヘッダーとして上につくよ。
んでそのアイコンと通知アイコンの色違うのね。

一応参考様
http://googledevjp.blogspot.jp/2016/06/android-n.html

基本的にアイコンは白にするべしは変わらずみたいだけど。
通知バー側は勝手に色付けされるみたい。
いつものティント!って奴ですね。

んで、setTitleでアプリ名つけてるような場合は、
新しく追加されたヘッダーにつくアプリ名と2重になるのでださくなる。。
要注意。

んでカスタムしてて朗報なのは
今まではアイコンとかアプリ名とか色やサイズを同じようなレイアウト作って合わせたりしてカスタムしてた方もいると思います。
例えば横にショートカット付けるだけとかね。

そういった方は
Notification.DecoratedCustomViewStyle、
Notification.DecoratedMediaCustomViewStyle
これらをつかえば今後はレイアウトだけに専念できます。

んで
builder.setContent(remoteView);
これが以下に変わりますよ。
builder.setCustomContentView(remoteView);

注意としては現状はNotificationCompatには対応していないので
通常のNotification.Builderを使うって所です。
issueで上がってたけどなんだかんだで大部変わってるので~的な感じだったのですぐには対応こないかも?対応する気はありそうなのか。。

使い方は
Notification.Builder builder = new Notification.Builder(context);
builder.setSmallIcon(R.drawable.ic_notification);
RemoteViews remoteView = createCustomContentView(); //これは例です
builder.setCustomContentView(remoteView);
builder.setStyle(new Notification.DecoratedCustomViewStyle());

setStyleしていればNougatのスタイルでアイコンとアプリ名とかは付きます。
んでコンテンツ部分だけセットしたカスタムレイアウトになります。
setStyleしなければいままでと同じです。
なのでNougat対応するなら24以降向けのlayout作ってアイコン部分とタイトル部分(アプリ名を表示しているなら)を除去してあと少し調節すればいいかと。

またsetStyleした場合、自動的に余白が付いています。
なので高さが大きいとexpandな通知になります。
救いなのは展開された状態で表示されるっぽいとこです。
*閉じられても通常の通知高さ分は表示されボタンとかおいてる場合はそれも押せるのであんまし影響もないかも。

いままでの同じように高さを64dpとか48dpだとexpandされるかと。
色々試した所、高さを38dpにするとexpandされない普通の通知と同じものになるみたい。
でもボタンとかは38dpだと押しにくいよきっとと記載しておきます。。。


*以下はNougatとか関係なくどのバージョンでも同じ。
もしメッセージとかなるべく同じレイアウトにしたいけどわからん。
でもカスタム通知作りたいという場合はググるのもいいですが、
SDKの中にレイアウトがあるので参考にすれば同じようなものが用意できます。
パス的には以下な感じ。環境によって違いますので適宜変えてください。

sdk/platforms/android-24/data/res/layout
notification_template_material_base.xml //これがベースのレイアウト
notification_template_part_line1.xml //タイトルとか

ここらへんです。
setStyleしないで通知のヘッダー部分も完全に自作したいならそのレイアウトもあるので参考に。


誰かの参考にもなればー