You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除Android通知图标并设置类似kjvBible的通知背景?

实现移除Android通知图标+自定义通知背景的方案

一、移除通知小图标

方案1:用全透明图标替代(兼容全API等级)

Android 8.0(API 26)及以上版本强制要求设置通知小图标,否则通知无法正常推送。可以创建一个全透明的Drawable资源,将其设为通知小图标,视觉上就实现了隐藏效果:

  1. 在res/drawable目录下创建transparent_icon.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@android:color/transparent" />
</shape>
  1. 构建通知时设置该图标:
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.transparent_icon)
    .setContentTitle("通知标题")
    .setContentText("通知内容")
    // 其他通知配置
    .build()

方案2:使用自定义通知布局(完全掌控UI)

如果需要完全自定义通知界面,直接在自定义布局里不添加图标控件即可:

  1. 创建自定义通知布局custom_notification.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:background="@drawable/notification_bg" <!-- 预留自定义背景位置 -->
    android:orientation="vertical">

    <!-- 仅添加标题、内容等需要的控件,不包含图标 -->
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:layout_marginTop="4dp"/>
</LinearLayout>
  1. 构建通知时绑定自定义布局:
val remoteViews = RemoteViews(context.packageName, R.layout.custom_notification)
remoteViews.setTextViewText(R.id.tv_title, "自定义通知标题")
remoteViews.setTextViewText(R.id.tv_content, "自定义通知内容")

val notification = NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.transparent_icon) // API26+仍需设置
    .setCustomContentView(remoteViews)
    .build()

二、设置类似kjvBible的通知背景

通过自定义Drawable背景实现,比如带圆角、纯色/渐变的样式:

  1. 在res/drawable目录下创建notification_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!-- 设置背景色 -->
    <solid android:color="#F5F5F5" />
    <!-- 设置圆角 -->
    <corners android:radius="12dp" />
    <!-- 可选:添加边框 -->
    <stroke
        android:width="1dp"
        android:color="#E0E0E0" />
    <!-- 可选:Android 9.0+添加阴影 -->
    <elevation android:elevation="4dp" />
</shape>
  1. 在自定义通知布局的根控件中引用该背景:
android:background="@drawable/notification_bg"

你之前的代码失效原因

你尝试通过系统布局的left_icon ID隐藏图标,但不同Android版本、不同厂商ROM的通知布局结构和控件ID差异极大,这个ID并非系统通用标识,因此无法在所有设备上生效。直接修改系统内部布局的方式不可靠,推荐使用上述标准方案。

内容的提问来源于stack exchange,提问作者NgSaiHor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:25:02