1

テキスト、画像、2 つのボタンで通知を表示する必要があります。サポート ライブラリの NotificationCompat を使用していますが、さまざまなデバイスでテストを開始するまで、すべてがうまく機能します。

3 つの異なるデバイスでの同じ通知を次に示します。

3 つの異なるデバイスのスクリーンショット

ここにはいくつかの問題があります:

デバイス 1 (Nexus 5、6.0): メッセージ テキストが表示されず、画像がトリミングされています。
デバイス 2 (エミュレーター、7.0): 画像が大幅にトリミングされています
デバイス 3 (Xiaomi mi5s、6.0): メッセージ テキストが欠落しており、アクション テキストは黒く、ほとんど見えません

再現できたその他の欠陥: 白い背景に白いアクション アイコン。画像が表示されない (samsung galaxy s8 plus、android 7.0); アクションボタンが表示されません。

最後に、2 つの最大の問題は、通知の一部が表示されないことと、アクション アイコンまたはアクション テキストが背景とほぼ同じ色になることです。

通知を表示するコードは次のとおりです。

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setContentTitle("Test title");
    builder.setContentText("Test notification text description");
    builder.setAutoCancel(true);
    builder.setSmallIcon(R.drawable.ic_launcher);
    builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
    builder.setContentIntent(pendingIntentContent);

    NotificationCompat.Style style;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && image != null) {
        style = new NotificationCompat.BigPictureStyle().bigPicture(image);
        builder.setStyle(style);
    }

    builder.addAction(R.drawable.ic_share_vector, "SHARE", pendingIntentShare);

    if(pendingIntentBookMark != null){
        builder.addAction(R.drawable.ic_bookmark, "SAVE", pendingIntentBookMark);
    }
    return builder.build();

自作のレイアウトを考えていたのですが、デバイスのメインカラーが何色なのかわかりません。黒い背景に白い通知を使用するデバイスもあれば、黒い背景に黒い通知を使用するデバイスもあります。別の色を使用すると、通知が異質に見えます。

この問題を特定のデバイスのせいにできることは理解していますが、通知がほとんどどこでも機能し、多かれ少なかれ一貫して表示されるようにする必要があります (テキストが表示されない、要素が欠落しているなどの重大な問題はありません)。

アクション ボタンの背景とテキストの色を設定して、常に表示されるようにする方法はありますか?

デバイスが通知領域と通知の背景に使用する色を知る方法はありますか?

BigPictureStyle 以外に使用できるものはありますか?

誰かが同じ問題を抱えていて、何らかの回避策を見つけたことを願っています。

4

0 に答える 0