通知栏设置系统字体颜色

欢迎Follow我的GitHub, 关注我的简书.

Colors

本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.html

Android

Android的Rom版本非常多, 通知栏颜色也各有不同, 如HTC是白底, 红米Note是暗色透明, 也有其他黑底, 灰底等. 统一设置相同的字体颜色, 必然会导致颜色冲突. 那么如何设置字体颜色, 可以正常显示呢?

HTC(5.0), 标题和内容的颜色已经和系统完全相同, 字体大小是适配的.

HTC5.0

红米Note, 标题和内容的颜色统一使用StatusBar字体的颜色.

红米Note

通知的逻辑

        RemoteViews views = new RemoteViews(mAppContext.getPackageName(), R.layout.view_notification);
        views.setImageViewResource(R.id.notification_iv_portrait, getSmallIcon());
        views.setTextViewText(R.id.notification_tv_calories, getContentText());

1. 版本5.0以下

通知的背景默认系统背景, 字体颜色@style/TextAppearance.StatusBar.EventContent.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tool="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="64dp"
    android:gravity="center_vertical">
    ...
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_toEndOf="@+id/notification_iv_portrait"
        android:layout_toRightOf="@+id/notification_iv_portrait"
        android:gravity="center_vertical"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/notification_widget_title"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:textSize="@dimen/d14sp"/>

        <TextView
            android:id="@+id/notification_tv_calories"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
            android:textSize="@dimen/d20sp"
            tool:text="10步 | 20大卡"/>
    </LinearLayout>
</RelativeLayout>

TextAppearance.StatusBar.EventContent, 顾名思义StatusBar的事件内容文本样式. 在系统中, 会默认匹配, 如灰色等.

2. 版本5.0及以上

新建layout-v21, 表面5.0版本以后使用.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tool="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="64dp"
    android:gravity="center_vertical">

    <ImageView
        android:id="@+id/notification_iv_portrait"
        android:layout_width="70dp"
        android:layout_height="64dp"
        android:paddingBottom="8dp"
        android:paddingTop="8dp"
        android:scaleType="centerInside"
        tool:src="@drawable/widget_normal"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_toRightOf="@+id/notification_iv_portrait"
        android:gravity="center_vertical"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/notification_widget_title"
            android:textAppearance="@android:style/TextAppearance.Material.Notification.Title"
            android:textSize="14sp"/>

        <TextView
            android:id="@+id/notification_tv_calories"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="@android:style/TextAppearance.Material.Notification.Line2"
            android:textSize="20sp"
            tool:text="10步 | 20大卡"/>
    </LinearLayout>
</RelativeLayout>

@android:style/TextAppearance.Material.Notification.Title通知栏标题.
@android:style/TextAppearance.Material.Notification.Line2通知栏内容.
这样就可以完全匹配系统颜色.

OK, 这个问题已经解决了.

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,650评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,642评论 2 45
  • 都说你是老鼠的天敌 你应该坚持正义 人民常把你比喻 冠以警察的名誉 现在老鼠狼烟四起 互相勾结团结紧密 贪脏枉法吭...
    王小永_6be2阅读 209评论 0 2
  • 开心, 你好美,而且越来越美… 尤其是最近,你突然喜欢上了裙子。 之前的近7年里,你对穿衣打扮一向不太热衷,向来是...
    蔡敏_Michelle阅读 212评论 0 0