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)