要实现 Android 自定义通知设置高度自动展开,可以使用以下步骤:

  1. 创建一个自定义的 Notification 布局,例如 notification_layout.xml。

  2. 在 notification_layout.xml 中设置一个高度固定的根布局,例如 LinearLayout,并在其中添加需要展示的内容。

  3. 创建一个继承自 NotificationCompat.Style 的自定义样式类,例如 CustomNotificationStyle。

  4. 在 CustomNotificationStyle 中重写 createContentView() 方法,将 notification_layout.xml 作为 ContentView 返回。

    @Override
    public RemoteViews createContentView() {
        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_layout);
        // 设置通知内容
        contentView.setTextViewText(R.id.notification_title, 'Notification Title');
        contentView.setTextViewText(R.id.notification_content, 'Notification Content');
        return contentView;
    }
    
  5. 在创建通知时,使用自定义样式类 CustomNotificationStyle。

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId)
            .setSmallIcon(R.drawable.notification_icon)
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setStyle(new CustomNotificationStyle());
    
  6. 在 AndroidManifest.xml 中,为应用的 NotificationChannel 设置 setImportance 为 IMPORTANCE_HIGH。

    <application ...>
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_id"
            android:value="@string/default_notification_channel_id"/>
    
        <activity .../>
    
        <service .../>
    
        <receiver .../>
    
        <service .../>
    
        <provider .../>
    
        <service .../>
    
        <service .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <provider .../>
    
        <service .../>
    
        <service .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <provider .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <service .../>
    
        <service .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <service .../>
    
        <service .../>
    
        <activity .../>
    
        <receiver .../>
    
        <service .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <service .../>
    
        <receiver .../>
    
        <service .../>
    
        <service .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <activity .../>
    
        <provider .../>
    
        <provider .../>
    
        <activity .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <service .../>
    
        <activity .../>
    
        <activity .../>
    
        <receiver .../>
    
        <activity .../>
    
        <service .../>
    
        <service .../>
    
        <receiver .../>
    
        <receiver .../>
    
        <!-- 设置通知渠道重要性为高 -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_importance"
            android:value="high"/>
    </application>
    
  7. 运行应用,显示通知时,通知应该会自动展开到设置的固定高度。

请注意,自定义通知样式只适用于 Android 4.1(API 级别 16)及更高版本。在较旧的 Android 版本上,通知可能无法自动展开。

Android 自定义通知设置高度自动展开

原文地址: https://www.cveoy.top/t/topic/ql48 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录