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ộngsetBigContentTitle(CharSequence)- Tiêu đề thay thế khi mở rộngsetSummaryText(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.