最近在做通知欄相關(guān)功能,和微信添加好友后的通知類似。因為下面有兩個view,想著應(yīng)該是自定義吧。便開始著手寫xml, 運行后發(fā)現(xiàn)有如下問題:
1.直接 設(shè)置 builder.setCustomContentView(remoteViews),發(fā)現(xiàn)通知欄顯示不全,此原因是自定義的remoteview 高度過高導(dǎo)致。
2.用builder.setCustomBigContentView(remoteViews), 發(fā)現(xiàn)通知欄會收縮起來,點擊小三角才能展示整個通知內(nèi)容。
顯然不滿足要求,經(jīng)查閱文檔看到notification 中有個addAction() ,此方法可以在通知欄下方添加按鈕。
intent.setAction("notification_clicked_ignore");
builder.addAction(0, "忽略", PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT));
intent.setAction("notification_clicked_accept");
builder.addAction(0, "接受", PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT));

一加手機通知欄.jpg

vivo 手機通知欄.jpg
以上兩個圖片都是微信添加好友后的通知,都是是系統(tǒng)自帶的通知欄,只是在不同的手機上表現(xiàn)不同。
需要注意的是在一加手機忽略和接受是靠近左邊的,而在vivo 手機上的表現(xiàn)是左右均分,如希望在一加手機上也左右均分,則可以用builder.setFullScreenIntent(). 代碼如下
//如果描述的PendingIntent已經(jīng)存在,則在產(chǎn)生新的Intent之前會先取消掉當(dāng)前的
PendingIntent hangPendingIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
builder.setFullScreenIntent(hangPendingIntent, true);

一加手機下方按鈕均分.jpg