Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Tạo thông báo Android với văn bản dài (BigTextStyle)

Giới thiệu

Mặc định thông báo Android chỉ hiển thị 1-2 dòng văn bản. Để hiển thị nội dung dài, sử dụng BigTextStyle cho phép mở rộng thông báo để hiển thị toàn bộ văn bản.

Các bước thực hiện

Bước 1: Tạo dự án mới

Tạo project Android Studio mới.

Bước 2: Layout (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="16dp"
        android:onClick="createNotification"
        android:text="Tạo thông báo văn bản dài" />

</RelativeLayout>

Bước 3: Thêm văn bản dài vào strings.xml (res/values/strings.xml)

<resources>
    <string name="app_name">NotifyMe</string>
    <string name="lorem_ipsum">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</string>
</resources>

Bước 4: MainActivity với BigTextStyle (src/MainActivity.java)

package app.tutorialspoint.com.notifyme;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    public static final String NOTIFICATION_CHANNEL_ID = "10001";
    private final static String default_notification_channel_id = "default";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void createNotification(View view) {
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            MainActivity.this, default_notification_channel_id);

        // LẤY VĂN BẢN DÀI TỪ RESOURCE
        String longText = getResources().getString(R.string.lorem_ipsum);

        mBuilder.setContentTitle("Thông báo văn bản dài");
        mBuilder.setContentText(longText); // Hiển thị khi thu gọn (1-2 dòng)
        
        // QUAN TRỌNG: ÁP DỤNG BIGTEXTSTYLE
        mBuilder.setStyle(new NotificationCompat.BigTextStyle()
            .bigText(longText)           // Văn bản đầy đủ khi mở rộng
            .setBigContentTitle("Tiêu đề mở rộng") // Tiêu đề khi mở rộng (tùy chọn)
            .setSummaryText("Kết thúc văn bản"));  // Dòng tóm tắt cuối (tùy chọn)

        mBuilder.setSmallIcon(R.drawable.ic_launcher_foreground);
        mBuilder.setAutoCancel(true);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            int importance = NotificationManager.IMPORTANCE_HIGH;
            NotificationChannel notificationChannel = new NotificationChannel(
                NOTIFICATION_CHANNEL_ID, "Kênh văn bản dài", importance);
            mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
            assert mNotificationManager != null;
            mNotificationManager.createNotificationChannel(notificationChannel);
        }

        assert mNotificationManager != null;
        mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());
    }
}

Bước 5: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.com.notifyme">

    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

So sánh: Thu gọn vs Mở rộng

Trạng thái Hiển thị
Thu gọn (Collapsed) Tiêu đề + 1-2 dòng đầu của contentText
Mở rộng (Expanded) Toàn bộ văn bản từ bigText(), có thể cuộn

Các phương thức BigTextStyle

  • bigText(CharSequence) - Văn bản đầy đủ hiển thị khi mở rộng
  • setBigContentTitle(CharSequence) - Tiêu đề thay thế khi mở rộng
  • setSummaryText(CharSequence) - Dòng chữ nhỏ ở cuối (ví dụ: "3 tin nhắn khác")

Khi nào dùng BigTextStyle?

  • Email nội dung dài
  • Tin nhắn chat nhiều dòng
  • Bài viết tin tức tóm tắt
  • Log lỗi chi tiết
  • Bất kỳ văn bản > 2 dòng

Chạy thử nghiệm

Chạy app → Nhấn nút → Kéo thanh thông báo → Thấy 2 dòng đầu → Vuốt xuống thông báo → Xem toàn bộ văn bản Lorem Ipsum.