Android,自定义通知,总是给我白色文本

Posted

技术标签:

【中文标题】Android,自定义通知,总是给我白色文本【英文标题】:Android, Custom Notification, Giving me always white Text 【发布时间】:2015-04-27 19:33:59 【问题描述】:

我正在尝试制作一个自定义通知栏,它可以正常工作,但是当我在棒棒糖中对其进行测试时,它会用白色文本显示标题和内容文本,这对 kitkat 有好处,因为通知栏是深色的,但不适用于棒棒糖。

我怎样才能让它变成默认颜色,或者至少检测到操作栏的主题,这样我就可以做一个 if 语句来改变文本的颜色。

    <LinearLayout
        android:id="@+id/right"
        android:layout_
        android:layout_
        android:weightSum="1">

        <ImageView
            android:id="@+id/imagenotileft"
            android:layout_
            android:layout_
            android:background="@drawable/ic_launcher"/>

        <RelativeLayout
            android:layout_weight="1"
            android:layout_
            android:layout_>
            <TextView
                android:id="@+id/title"
                android:textSize="18sp"
                android:textStyle="bold"
                android:layout_
                android:layout_
                android:textColor="@color/white"
                android:hint="Title Text"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:layout_marginTop="10dp"/>

            <TextView
                android:id="@+id/text"
                android:layout_
                android:layout_
                android:layout_below="@+id/title"
                android:hint="Content Text"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"/>

        </RelativeLayout>

    <TextView
        android:id="@+id/space2"
        android:layout_
        android:layout_
        android:text="        "
        android:layout_toLeftOf="@+id/right2"/>


        <RelativeLayout
            android:id="@+id/parentRa"
            android:layout_
            android:layout_
            android:layout_marginTop="10dp"
            android:layout_marginRight="10dp"
            >


            <TextView
                android:id="@+id/time"
                android:layout_
                android:layout_
                android:hint="12:12"
                android:text="12:12"
                />

            <ImageView
                android:id="@+id/imagenotiright"
                android:layout_
                android:layout_
                android:background="@drawable/ic_action_chat"
                android:layout_below="@+id/time"
                android:nestedScrollingEnabled="false" />

        </RelativeLayout>
        </LinearLayout>
</RelativeLayout>

代码:

public void CustomNotification(String strtext) 
        // Using RemoteViews to bind custom layouts into Notification
        RemoteViews remoteViews = new RemoteViews(getPackageName(),
                R.layout.customnotification);

        // Set Notification Title
        String strtitle = getString(R.string.customnotificationtitle);
        // Open NotificationView Class on Notification Click
        Intent intent = new Intent(this, NotificationView.class);
        // Send data to NotificationView Class
        intent.putExtra("title", strtitle);
        intent.putExtra("text", strtext);
        intent.putExtra("String T", "");
        //intent.putExtra("Integer C", 0);

        // Open NotificationView.java Activity
        PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                // Set Icon
                .setSmallIcon(R.drawable.ic_launcher)
                        // Set Ticker Message
                .setTicker(getString(R.string.customnotificationticker))
                        // Dismiss Notification
                .setAutoCancel(true)
                        // Set PendingIntent into Notification
                .setContentIntent(pIntent)
                        // Set RemoteViews into Notification
                .setContent(remoteViews);

        // Locate and set the Image into customnotificationtext.xml ImageViews
        remoteViews.setImageViewResource(R.id.imagenotileft,R.drawable.ic_launcher);
        remoteViews.setImageViewResource(R.id.imagenotiright,R.mipmap.ic_action_chat);

        // Locate and set the Text into customnotificationtext.xml TextViews
        remoteViews.setTextViewText(R.id.title,getString(R.string.customnotificationtitle));
        remoteViews.setTextViewText(R.id.text, strtext);

        // Create Notification Manager
        NotificationManager notificationmanager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        // Build Notification with Notification Manager
        notificationmanager.notify(0, builder.build());

    

我将不胜感激。非常感谢。

【问题讨论】:

Custom notification layouts and text colors的可能重复 【参考方案1】:

我不太确定,但你可以试试这样:

if (android.os.Build.VERSION.SDK_INT > 20) 
    // I am not sure of this method
    remoteViews.setTextColor(R.id.text, Color.WHITE);

【讨论】:

检测操作系统是棒棒糖还是低版本 它成功了,非常感谢,还有一件事,所以 SDK_INT > 20 之后是棒棒糖? 你想改变文本的颜色,然后在if条件块中改变它..改变它为Color.BLUE或任何其他颜色 是 20 岁以后。。不客气。。如果对你有帮助,请接受我的回答 接受是什么意思?把支票放在上面?我已经这样做了

以上是关于Android,自定义通知,总是给我白色文本的主要内容,如果未能解决你的问题,请参考以下文章

使用 firebase_messaging 自定义通知(Android 和 IOS)

自定义android通知背景

Monaca:使用 Onesignal 在 Android 中自定义通知声音和小图标

在自定义通知布局中更新 TextView

手机进入睡眠状态时不播放自定义通知声音

钉钉机器人自定义通知-python