我需要创建一个包含更长文本的通知,这可能吗?默认情况下不是,但您可以使用custom layout,这就是我所做的。现在我可以显示多行,但正如您所看到的,文本仍然被破坏/未完全显示? ):有人可以告诉我我做错了什么/如果通知的大小有固定的限制吗?如果你看一下屏幕截图,你会注意到,还剩下很多空间......感谢任何提示!
BTW这里是用于自定义布局的XML,基于http://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomNotification
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp"
>
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#000"
/>
</LinearLayout>
答案 0 :(得分:47)
对于Jelly Bean及更高版本,您可以使用可扩展通知。最简单的方法是使用NotificationCompat.BigTextStyle进行通知。
像这样:
NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
bigTextStyle.setBigContentTitle(getString(R.string.title));
bigTextStyle.bigText(getString(R.string.long_explanation));
mBuilder.setStyle(bigTextStyle);
答案 1 :(得分:36)
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(message))
.setContentText(message)
.setDefaults(NotificationCompat.DEFAULT_SOUND)
.setContentIntent(contentIntent)
.setAutoCancel(true);
mNotificationManager.notify(requestID, mBuilder.build());
reffer https://developer.android.com/guide/topics/ui/notifiers/notifications.html
答案 2 :(得分:5)
通知视图的高度限制为65sp
。这是实施细节,未记录在案has been changed in Android 4.1 to support expandable notifications。所以不要依赖这个特定的值,而是要依赖于视图的高度有限的事实。
以下status_bar_latest_event.xml
用于在通知区域中夸大视图:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="65sp"
android:orientation="vertical"
>
<com.android.server.status.LatestItemView android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="64sp"
android:background="@drawable/status_bar_item_background"
android:focusable="true"
android:clickable="true"
android:paddingRight="6sp"
>
</com.android.server.status.LatestItemView>
<View
android:layout_width="match_parent"
android:layout_height="1sp"
android:background="@drawable/divider_horizontal_bright"
/>
</LinearLayout>
答案 3 :(得分:2)
5.0这对我有用 它很好地包裹了长队。它还允许您提供一系列字符串,这些字符串将以新行分隔显示。
String[] multilineDescription = new String[] { "line 1", "another very long line that will get wrapped." };
NotificationCompat.Builder builder = new NotificationCompat.Builder(appContext)
.setSmallIcon(smallIcon)
.setContentTitle(title)
.setContentText("Pull down for more information");
String description;
if (null == multilineDescription || multilineDescription.length == 0) {
description = "No more information.";
} else {
description = multilineDescription[0];
for (int i=1; i<multilineDescription.length; i++) {
description += System.getProperty("line.separator");
description += multilineDescription[i];
}
}
builder.setStyle(new NotificationCompat.BigTextStyle().bigText(description));
答案 4 :(得分:1)
我的理解是Android的通知系统每个通知的高度有限,以避免单个通知填满屏幕。
从您关联的页面:
警告:使用自定义通知布局时,请特别注意确保自定义布局使用不同的设备方向和分辨率。虽然此建议适用于所有View布局,但对于通知尤为重要,因为通知抽屉中的空间非常受限。不要让自定义布局过于复杂,并确保以各种配置进行测试。
但是,您可以在通知中显示多个通知,“粘性”通知或可能滚动文本。
有关使用通知可以执行的操作的详细信息,请参阅:
答案 5 :(得分:1)
Android提供了一个大视图可扩展通知,他们支持3种风格,bigpicture风格,收件箱风格,大文本风格(256 dp),但只有Android版本大于jelly bean。对于较低版本,我们没有任何大文字样式通知。