android.support.v7.app.NotificationCompat.MediaStyle
で構築された非カスタム通知は、Android Marshmallowでは非常に低いコントラストで表示されます。 (これはロリポップとヌガーで結構です。)マシュマロの低コントラストMediaStyle通知
図マシュマロ1.を、アプリケーション外部から、そのプルダウン通知は、暗い背景上の明るいテキストがあります。
図2 。アプリの活動が実行されている場合、それはコントロールを停止/再生/一時停止せずにアラーム通知を提示するMediaStyle
を非に切り替わるので、彼らは明るい背景の期待暗いテキストを取得:
Fをig。3.マシュマロでは、アプリの外にヘッドアップ通知が非常に低いコントラストを持っています: - >これは読みにくいです!
NotificationCompat.Builder#setColor(0xb71c1c)
を呼び出すと、実際に(図2と比較)非MediaStyle
通知のアクセントカラーを設定しない実験として
図5 ...マシュマロでは、MediaStyle
通知の背景色を設定します。 これはあまりにも多くの色であり、疑いの余地はありません。
図6試験回避策として、アプリケーションは、スペック外の場合にヘッドアップ通知をより読みやすくなりれ、setColor(0x9e9e9e)
(標準アクセントカラー)を呼び出すことができます。
図。 7. ...しかし、それはまた、スペックのうちプルダウン通知は珍しいとなります:。
図8 ...、それは大きな形で悪化なります プルダウンMediaStyle
通知をめちゃくちゃにすることなく、ヘッドアップMediaStyle
通知を読みやすくするための回避策は
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
}
より良い回避策を求めています。
Android v7でバグが修正され、v8でも修正されました。私は将来のNotificationCompatライブラリがv6の回避策を追加するかもしれないことを期待してバグレポートを提出することができましたが、私は楽観的ではありません。この問題を回避するには、アプリケーションの色の選択に脆弱な依存関係がある可能性が高いため、解決するよりも多くの問題を引き起こす可能性があります。 – Jerry101