问题
维护公司之前同事留下的老项目,遇到了自定义的Notification布局,高度在部分机型上显示不全
解决
在默认情况下低版本,NotificationCompat只有
Builder.setContent(remoteViews); //默认高度64 超出则显示不全
而在api16 以上提供了bigContenteview
Builder.setCustomBigContentView(remoteViews);// 默认高度256 超出则显示不全
其中RemoteViews的布局最外层是这样,当我设置layout_height为wrap_content时,通知栏不显示推送内容,只有logo和时间,转为设置为具体高度就可以了:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="75dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:layout_width="match_parent"
android:orientation="horizontal">
</LinearLayout>
因为我们的app版本最低支持大于16,我就直接设置了
Builder.setCustomBigContentView(remoteViews);
发现大部分机型都正常了,但是小米4c上显示不全,然后加上16之前的设置方法得以解决,最终如下:
/两行代码适配通知栏不显示内容/显示不全的问题
mBuilder.setContent(mRemoteView);
mBuilder.setCustomBigContentView(mRemoteView);
可以正常展示,但是自定义的通知栏距两侧的边距不同机型表现不一致。
关于RemoteViews的介绍,推荐一下:
RemoteViews的作用和原理
这篇风格我个人很喜欢,是什么,能做什么,怎么做,原理是什么。加之引用官方文档来介绍。
从使用角度在推荐一篇:
Android通知栏详解
网友评论