2016-07-16 9 views
3

android.support.v7.app.NotificationCompat.MediaStyleで構築された非カスタム通知は、Android Marshmallowでは非常に低いコントラストで表示されます。 (これはロリポップとヌガーで結構です。)マシュマロの低コントラストMediaStyle通知

図マシュマロ1.を、アプリケーション外部から、そのプルダウン通知は、暗い背景上の明るいテキストがあります。 dark pull-down MediaStyle notification on Marshmallow

図2 。アプリの活動が実行されている場合、それはコントロールを停止/再生/一時停止せずにアラーム通知を提示するMediaStyleを非に切り替わるので、彼らは明るい背景の期待暗いテキストを取得: light heads-up notification on Marshmallow

Fをig。3.マシュマロでは、アプリの外にヘッドアップ通知が非常に低いコントラストを持っています: low-contrast heads-up MediaStyle notification on Marshmallow - >これは読みにくいです! NotificationCompat.Builder#setColor(0xb71c1c)を呼び出すと、実際に(図2と比較)非MediaStyle通知のアクセントカラーを設定しない実験として

図4を、: light heads-up notification on Marshmallow with accent color

図5 ...マシュマロでは、MediaStyle通知の背景色を設定します。 red background-colored pull-down MediaStyle notification on Marshmallow これはあまりにも多くの色であり、疑いの余地はありません。

図6試験回避策として、アプリケーションは、スペック外の場合にヘッドアップ通知をより読みやすくなりれ、setColor(0x9e9e9e)(標準アクセントカラー)を呼び出すことができます。 light-gray background-colored heads-up MediaStyle notification on Marshmallow

図。 7. ...しかし、それはまた、スペックのうちプルダウン通知は珍しいとなります:。 light-gray background-colored pull-down MediaStyle notification on Marshmallow

図8 ...、それは大きな形で悪化なります プルダウンMediaStyle通知をめちゃくちゃにすることなく、ヘッドアップMediaStyle通知を読みやすくするための回避策はlight-gray large format pull-down MediaStyle notification, showing color clash in context of other notifications

Q.ありますか?

明らかに、マシュマロのみの回避策になります。

編集:バグはまだ奇妙です。私は、マシュマロウでヘッズアップ通知(通知をsetSound()とする)を行う可能性が高いときを予測し、その場合にのみsetColor()を呼び出しました。新しい通知が同じIDのプルダウン通知を置き換えた場合、その通知はそのIDの背景色を継承します。私。 前へプルダウン通知のsetColor()は、この新しいヘッズアップ通知の背景色を設定し、後でsetColor()を呼び出すとそのアクセントカラーを設定します。新しい通知が以前の通知を置き換えない場合は、setColor()は背景色とアクセント色の両方を設定します。

通知が成功してもプルダウン通知に戻ると、通知は色付きのままです。したがって、このアプローチは、システムがヘッドアップ通知をいつ開くのかを正しく予測しても機能しません。

概要:それは読みにくいまたは任意のマシュマロデバイス上の派手プルダウン通知をする危険にさらすことなく、ヘッドアップ通知が読みやすくなり、その中では私が

if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) { 
    builder.setColor(context.getColor(R.color.gray_text)); // #9e9e9e 
} 

より良い回避策を求めています。

答えて

1

"compat"通知に問題が生じるだけではありません。ただ、この行を追加:

builder.setStyle(new Notification.MediaStyle()); 

はAndroidの6中(白文字で)私の通知灰色をした、それは私がテストのためのAndroid 8デバイスを持たないアンドロイド7で白いまま。

私はここでいくつかの "compat"クラスを使用しなかったことに注意してください。

バグレポートを書くことをお勧めします。

+0

Android v7でバグが修正され、v8でも修正されました。私は将来のNotificationCompatライブラリがv6の回避策を追加するかもしれないことを期待してバグレポートを提出することができましたが、私は楽観的ではありません。この問題を回避するには、アプリケーションの色の選択に脆弱な依存関係がある可能性が高いため、解決するよりも多くの問題を引き起こす可能性があります。 – Jerry101

0

物事はさらに悪化している:私はsetSmallIcon()とsetLargeIcon()を使用しています

1.

Android 6では、小さなアイコンはメニューバーでのみ使用され、通知自体では使用されません。この通知では、左側に表示されている縮小アイコン(コンパクトビュー)の大きなアイコンが使用されます。

Android 7の場合、右側には大きなアイコン(コンパクトビューで縮小表示)が表示されますが、右側には表示されず、正確には左側の反対側に表示されます。さらに、通知の最後の行が最初のものになり、私のユースケースを妨害します。さらにこの行の前に小さなアイコンとアプリ名があります。副作用として小さな行が切り詰められ、私のアプリをさらに妨害します。

アンドロイドバージョンの両方で

はsetShowActionsInCompactView()目に見える影響を及ぼしませんでした。ロック画面に

再生/一時停止アイコン(通知が拡張されます)表示されているが、デバイスのロックを解除せずに到達できません。だからここでは役に立たない。

関連する問題