| <?xml version="1.0" encoding="utf-8"?> |
| <!-- |
| ~ Copyright (C) 2020 The Android Open Source Project |
| ~ |
| ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| ~ you may not use this file except in compliance with the License. |
| ~ You may obtain a copy of the License at |
| ~ |
| ~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~ |
| ~ Unless required by applicable law or agreed to in writing, software |
| ~ distributed under the License is distributed on an "AS IS" BASIS, |
| ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ~ See the License for the specific language governing permissions and |
| ~ limitations under the License |
| --> |
| <com.android.internal.widget.ConversationLayout |
| xmlns:android="http://schemas.android.com/apk/res/android" |
| android:id="@+id/status_bar_latest_event_content" |
| android:layout_width="match_parent" |
| android:layout_height="wrap_content" |
| android:clipChildren="false" |
| android:tag="conversation" |
| android:theme="@style/Theme.DeviceDefault.Notification" |
| > |
| |
| <FrameLayout |
| android:id="@+id/conversation_icon_container" |
| android:layout_width="@dimen/conversation_content_start" |
| android:layout_height="wrap_content" |
| android:gravity="start|top" |
| android:clipChildren="false" |
| android:clipToPadding="false" |
| android:paddingTop="12dp" |
| android:paddingBottom="12dp" |
| > |
| |
| <FrameLayout |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:clipChildren="false" |
| android:clipToPadding="false" |
| android:layout_gravity="top|center_horizontal" |
| > |
| |
| <!-- Big icon: 52x52, 12dp padding left + top, 16dp padding right --> |
| <com.android.internal.widget.CachingIconView |
| android:id="@+id/conversation_icon" |
| android:layout_width="@dimen/conversation_avatar_size" |
| android:layout_height="@dimen/conversation_avatar_size" |
| android:scaleType="centerCrop" |
| android:importantForAccessibility="no" |
| /> |
| |
| <ViewStub |
| android:layout="@layout/conversation_face_pile_layout" |
| android:layout_width="@dimen/conversation_avatar_size" |
| android:layout_height="@dimen/conversation_avatar_size" |
| android:id="@+id/conversation_face_pile" |
| /> |
| |
| <FrameLayout |
| android:id="@+id/conversation_icon_badge" |
| android:layout_width="@dimen/conversation_icon_size_badged" |
| android:layout_height="@dimen/conversation_icon_size_badged" |
| android:layout_marginLeft="@dimen/conversation_badge_side_margin" |
| android:layout_marginTop="@dimen/conversation_badge_side_margin" |
| android:clipChildren="false" |
| android:clipToPadding="false" |
| > |
| <com.android.internal.widget.CachingIconView |
| android:id="@+id/conversation_icon_badge_bg" |
| android:layout_width="match_parent" |
| android:layout_height="match_parent" |
| android:layout_gravity="center" |
| android:src="@drawable/conversation_badge_background" |
| android:forceHasOverlappingRendering="false" |
| android:scaleType="center" |
| /> |
| <com.android.internal.widget.CachingIconView |
| android:id="@+id/icon" |
| android:layout_width="match_parent" |
| android:layout_height="match_parent" |
| android:layout_margin="4dp" |
| android:layout_gravity="center" |
| android:forceHasOverlappingRendering="false" |
| /> |
| <com.android.internal.widget.CachingIconView |
| android:id="@+id/conversation_icon_badge_ring" |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:layout_gravity="center" |
| android:src="@drawable/conversation_badge_ring" |
| android:visibility="gone" |
| android:forceHasOverlappingRendering="false" |
| android:clipToPadding="false" |
| android:scaleType="center" |
| /> |
| </FrameLayout> |
| </FrameLayout> |
| </FrameLayout> |
| |
| <!-- Wraps entire "expandable" notification --> |
| <com.android.internal.widget.RemeasuringLinearLayout |
| android:layout_width="match_parent" |
| android:layout_height="wrap_content" |
| android:layout_gravity="top" |
| android:clipToPadding="false" |
| android:clipChildren="false" |
| android:orientation="vertical" |
| > |
| <!-- LinearLayout for Expand Button--> |
| <com.android.internal.widget.RemeasuringLinearLayout |
| android:id="@+id/expand_button_and_content_container" |
| android:layout_width="match_parent" |
| android:layout_height="wrap_content" |
| android:layout_weight="1" |
| android:gravity="start|top" |
| android:orientation="horizontal" |
| android:clipChildren="false" |
| android:clipToPadding="false"> |
| <!--TODO: move this into a separate layout and share logic with the header to bring back app opps etc--> |
| <com.android.internal.widget.RemeasuringLinearLayout |
| android:id="@+id/notification_action_list_margin_target" |
| android:layout_width="0dp" |
| android:orientation="vertical" |
| android:layout_height="wrap_content" |
| android:layout_weight="1"> |
| |
| <!-- Header --> |
| <LinearLayout |
| android:id="@+id/conversation_header" |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:orientation="horizontal" |
| android:paddingTop="16dp" |
| android:layout_marginBottom="2dp" |
| android:paddingStart="@dimen/conversation_content_start" |
| > |
| <TextView |
| android:id="@+id/conversation_text" |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:layout_marginEnd="@dimen/notification_conversation_header_separating_margin" |
| android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Title" |
| android:textSize="16sp" |
| android:singleLine="true" |
| android:layout_weight="1" |
| /> |
| |
| <TextView |
| android:id="@+id/app_name_divider" |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:textAppearance="?attr/notificationHeaderTextAppearance" |
| android:layout_marginStart="@dimen/notification_conversation_header_separating_margin" |
| android:layout_marginEnd="@dimen/notification_conversation_header_separating_margin" |
| android:text="@string/notification_header_divider_symbol" |
| android:layout_gravity="center" |
| android:paddingTop="1sp" |
| android:singleLine="true" |
| android:visibility="gone" |
| /> |
| |
| <!-- App Name --> |
| <com.android.internal.widget.ObservableTextView |
| android:id="@+id/app_name_text" |
| android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Info" |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:layout_gravity="center" |
| android:layout_marginStart="@dimen/notification_conversation_header_separating_margin" |
| android:layout_marginEnd="@dimen/notification_conversation_header_separating_margin" |
| android:paddingTop="1sp" |
| android:singleLine="true" |
| android:visibility="gone" |
| /> |
| |
| <TextView |
| android:id="@+id/time_divider" |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:textAppearance="?attr/notificationHeaderTextAppearance" |
| android:layout_marginStart="@dimen/notification_conversation_header_separating_margin" |
| android:layout_marginEnd="@dimen/notification_conversation_header_separating_margin" |
| android:text="@string/notification_header_divider_symbol" |
| android:layout_gravity="center" |
| android:paddingTop="1sp" |
| android:singleLine="true" |
| android:visibility="gone" |
| /> |
| |
| <DateTimeView |
| android:id="@+id/time" |
| android:textAppearance="@style/TextAppearance.DeviceDefault.Notification.Time" |
| android:layout_width="wrap_content" |
| android:layout_height="wrap_content" |
| android:layout_gravity="center" |
| android:layout_marginStart="@dimen/notification_conversation_header_separating_margin" |
| android:paddingTop="1sp" |
| android:showRelative="true" |
| android:singleLine="true" |
| android:visibility="gone" |
| /> |
| |
| <ImageView |
| android:id="@+id/alerted_icon" |
| android:layout_width="@dimen/notification_alerted_size" |
| android:layout_height="@dimen/notification_alerted_size" |
| android:layout_gravity="center" |
| android:layout_marginStart="4dp" |
| android:paddingTop="2dp" |
| android:scaleType="fitCenter" |
| android:visibility="gone" |
| android:contentDescription="@string/notification_alerted_content_description" |
| android:src="@drawable/ic_notifications_alerted"/> |
| |
| <ImageView |
| android:id="@+id/profile_badge" |
| android:layout_width="@dimen/notification_badge_size" |
| android:layout_height="@dimen/notification_badge_size" |
| android:layout_gravity="center" |
| android:layout_marginStart="4dp" |
| android:paddingTop="2dp" |
| android:scaleType="fitCenter" |
| android:visibility="gone" |
| android:contentDescription="@string/notification_work_profile_content_description" |
| /> |
| <LinearLayout |
| android:id="@+id/app_ops" |
| android:layout_height="wrap_content" |
| android:layout_width="wrap_content" |
| android:paddingTop="3dp" |
| android:layout_marginStart="2dp" |
| android:background="?android:selectableItemBackgroundBorderless" |
| android:orientation="horizontal" > |
| <ImageView |
| android:layout_marginStart="4dp" |
| android:id="@+id/camera" |
| android:layout_width="?attr/notificationHeaderIconSize" |
| android:layout_height="?attr/notificationHeaderIconSize" |
| android:src="@drawable/ic_camera" |
| android:visibility="gone" |
| android:focusable="false" |
| android:contentDescription="@string/notification_appops_camera_active" |
| /> |
| <ImageView |
| android:id="@+id/mic" |
| android:layout_width="?attr/notificationHeaderIconSize" |
| android:layout_height="?attr/notificationHeaderIconSize" |
| android:src="@drawable/ic_mic" |
| android:layout_marginStart="4dp" |
| android:visibility="gone" |
| android:focusable="false" |
| android:contentDescription="@string/notification_appops_microphone_active" |
| /> |
| <ImageView |
| android:id="@+id/overlay" |
| android:layout_width="?attr/notificationHeaderIconSize" |
| android:layout_height="?attr/notificationHeaderIconSize" |
| android:src="@drawable/ic_alert_window_layer" |
| android:layout_marginStart="4dp" |
| android:visibility="gone" |
| android:focusable="false" |
| android:contentDescription="@string/notification_appops_overlay_active" |
| /> |
| </LinearLayout> |
| </LinearLayout> |
| |
| <!-- Messages --> |
| <com.android.internal.widget.MessagingLinearLayout |
| android:id="@+id/notification_messaging" |
| android:layout_width="match_parent" |
| android:layout_height="wrap_content" |
| android:minHeight="@dimen/notification_text_size" |
| android:spacing="@dimen/notification_messaging_spacing" |
| android:clipToPadding="false" |
| android:clipChildren="false" |
| /> |
| </com.android.internal.widget.RemeasuringLinearLayout> |
| |
| <!-- This is where the expand button container will be placed when collapsed--> |
| </com.android.internal.widget.RemeasuringLinearLayout> |
| |
| <include layout="@layout/notification_template_smart_reply_container" |
| android:layout_width="match_parent" |
| android:layout_height="wrap_content" |
| android:layout_marginTop="@dimen/notification_content_margin" |
| android:layout_marginStart="@dimen/conversation_content_start" |
| android:layout_marginEnd="@dimen/notification_content_margin_end" /> |
| <include layout="@layout/notification_material_action_list" /> |
| </com.android.internal.widget.RemeasuringLinearLayout> |
| |
| <!--This is dynamically placed between here and at the end of the layout. It starts here since |
| only FrameLayout layout params have gravity--> |
| <FrameLayout |
| android:id="@+id/expand_button_container" |
| android:layout_width="wrap_content" |
| android:layout_height="match_parent" |
| android:layout_gravity="end|top" |
| android:clipChildren="false" |
| android:clipToPadding="false"> |
| <!--This layout makes sure that we can nicely center the expand content in the |
| collapsed layout while the parent makes sure that we're never laid out bigger |
| than the messaging content.--> |
| <LinearLayout |
| android:id="@+id/expand_button_inner_container" |
| android:layout_width="wrap_content" |
| android:layout_height="@dimen/conversation_expand_button_size" |
| android:paddingStart="16dp" |
| android:orientation="horizontal" |
| android:layout_gravity="end|top" |
| android:paddingEnd="@dimen/notification_content_margin_end" |
| android:clipToPadding="false" |
| android:clipChildren="false" |
| > |
| <!-- Images --> |
| <com.android.internal.widget.MessagingLinearLayout |
| android:id="@+id/conversation_image_message_container" |
| android:forceHasOverlappingRendering="false" |
| android:layout_width="40dp" |
| android:layout_height="40dp" |
| android:layout_marginEnd="11dp" |
| android:spacing="0dp" |
| android:layout_gravity="center" |
| android:clipToPadding="false" |
| android:clipChildren="false" |
| /> |
| <!-- Unread Count --> |
| <TextView |
| android:id="@+id/conversation_unread_count" |
| android:layout_width="33sp" |
| android:layout_height="wrap_content" |
| android:layout_marginEnd="11dp" |
| android:layout_gravity="center" |
| android:gravity="center" |
| android:padding="2dp" |
| android:visibility="gone" |
| android:textAppearance="@style/TextAppearance.DeviceDefault.Notification" |
| android:textColor="#FFFFFF" |
| android:textSize="12sp" |
| android:background="@drawable/conversation_unread_bg" |
| /> |
| <com.android.internal.widget.NotificationExpandButton |
| android:id="@+id/expand_button" |
| android:layout_width="@dimen/notification_header_expand_icon_size" |
| android:layout_height="@dimen/notification_header_expand_icon_size" |
| android:layout_gravity="center" |
| android:drawable="@drawable/ic_expand_notification" |
| android:clickable="false" |
| android:importantForAccessibility="no" |
| /> |
| </LinearLayout> |
| </FrameLayout> |
| </com.android.internal.widget.ConversationLayout> |