通知栏设置系统字体颜色

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

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

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

通知的逻辑

        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, 这个问题已经解决了.

参考

时间: 2024-08-07 18:36:46

通知栏设置系统字体颜色的相关文章

iOS开发之iOS7设置状态栏字体颜色

应用中登陆界面颜色较浅,状态栏字体颜色为黑色,跳转到主界面之后,界面颜色较深,状态栏颜色随之变成白色.但是再重新返回登陆界面后,状态栏字体颜色并没有改成黑色,特别别扭. plist文件里将View controller-based status bar appearance改为NO然后在view controller里边加上下边一句就可以了,这样状态栏是黑字 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyle

c语言编程设置控制台字体颜色

一.设置字体颜色: 1. 0 = 黑色       8 = 灰色 1 = 蓝色       9 = 淡蓝色 2 = 绿色       A = 淡绿色 3 = 浅绿色     B = 淡浅绿色 4 = 红色       C = 淡红色 5 = 紫色       D = 淡紫色 6 = 黄色       E = 淡黄色 7 = 白色       F = 亮白色 #include <stdlib.h> system("color 2");system("color F&

点击单元格清除默认值并且能够设置输入字体颜色

点击单元格清除默认值并且能够设置输入字体颜色: 在很多情况下,文本框内有默认文字,一般都是提示类的文字,当点击文本框的时候能够清除写文字,下面就简单介绍一下如何实现此效果.代码如下: <!DOCTYPE HTML> <html> <head> <meta charset=" utf-8"> <title>javascript便利表格</title> <script type="text/javasc

python之设置控制台字体颜色

# 设置控制台输出字体颜色 # 格式:\033[显示方式;前景色;背景色m # 采用终端默认设置:\033[0m # 红色字体 print('\033[1;31m') print('*' * 10) print('hello world!') print('*' * 10) print('\033[0m') # 绿色字体 print('\033[1;32m' + 'green' + '\033[0m') # 蓝色字体 print('\033[1;34m' + 'blue' + '\033[0m'

如何设置控制台字体颜色

可以利用SetConsoleTextAttribute函数实现对控制台字体颜色.下划线等格式的设置 1. SetConsoleTextAttribute 函数原型 1 BOOL WINAPI SetConsoleTextAttribute( 2 _In_ HANDLE hConsoleOutput, // 控制台输出流句柄 3 _In_ WORD wAttributes // 设置属性 4 ); hConsoleOutput [输入参数] 控制台屏幕的输出流的句柄(handle to conso

iOS:UILabel设置不同字体颜色

NSString *str = @"0123456789";//label内容 NSMutableAttributedString *str1 = [[NSMutableAttributedString alloc] initWithString:str]; //根据下标索引设置字体颜色 [str addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0,5)];

CSS设置元素字体颜色与背景

CSS的颜色与背景属性用于设置前景色.背景色和背景图片. 常见的颜色与背景属性: color:                              十六进制.rgb()函数或CSS承认的颜色名:                                                       用于设定元素的前景色 background-color:            同上或transparent                                        

HTML设置超链接字体颜色和点击后的字体颜色

定义链接样式 CSS为一些特殊效果准备了特定的工具,我们称之为“伪类”.其中有几项是我们经常用到的,下面我们就详细介绍一下经常用于定义链接样式的四个伪类,它们分别是: :link :visited :hover :active 因为我们要定义链接样式,所以其中必不可少的就是超级链接中的锚标签--a,锚标签和伪类链接起来书写的方法就是定义链接样式的基础方法,它们的写法如下: a:link,定义正常链接的样式: a:visited,定义已访问过链接的样式: a:hover,定义鼠标悬浮在链接上时的样

eclipse设置系统字体

1. 打开eclipse-->Window-->Preferences-->General-->appearance-->Colors and Fonts, 点开后选择Basic之后选择Text Font 2.点击右边的Edit...能够看到图的左下角有个显示很多其它字体点击进去会打开windows 的全部字体 3.选择你想要的字体,注意,这里显示的字体都是隐藏的我们仅仅须要选中想要的字体右键-->显示.就能够了.