xref: /aosp_15_r20/frameworks/base/packages/SystemUI/res/layout/status_bar.xml (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1<?xml version="1.0" encoding="utf-8"?>
2<!--
3**
4** Copyright 2006, The Android Open Source Project
5**
6** Licensed under the Apache License, Version 2.0 (the "License");
7** you may not use this file except in compliance with the License.
8** You may obtain a copy of the License at
9**
10**     http://www.apache.org/licenses/LICENSE-2.0
11**
12** Unless required by applicable law or agreed to in writing, software
13** distributed under the License is distributed on an "AS IS" BASIS,
14** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15** See the License for the specific language governing permissions and
16** limitations under the License.
17*/
18-->
19
20<!--    android:background="@drawable/status_bar_closed_default_background" -->
21<com.android.systemui.statusbar.phone.PhoneStatusBarView
22    xmlns:android="http://schemas.android.com/apk/res/android"
23    xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
24    android:layout_width="match_parent"
25    android:layout_height="@dimen/status_bar_height"
26    android:id="@+id/status_bar"
27    android:orientation="vertical"
28    android:focusable="false"
29    android:descendantFocusability="afterDescendants"
30    android:accessibilityPaneTitle="@string/status_bar"
31    >
32
33    <ImageView
34        android:id="@+id/notification_lights_out"
35        android:layout_width="@dimen/status_bar_icon_size_sp"
36        android:layout_height="match_parent"
37        android:paddingStart="@dimen/status_bar_padding_start"
38        android:paddingBottom="2dip"
39        android:src="@drawable/ic_sysbar_lights_out_dot_small"
40        android:scaleType="center"
41        android:visibility="gone"
42        />
43
44    <LinearLayout android:id="@+id/status_bar_contents"
45        android:layout_width="match_parent"
46        android:layout_height="match_parent"
47        android:clipChildren="false"
48        android:clipToPadding="false"
49        android:paddingStart="@dimen/status_bar_padding_start"
50        android:paddingEnd="@dimen/status_bar_padding_end"
51        android:paddingTop="@dimen/status_bar_padding_top"
52        android:orientation="horizontal">
53
54        <!-- Container for the entire start half of the status bar. It will always use the same
55             width, independent of the number of visible children and sub-children. -->
56        <FrameLayout
57            android:id="@+id/status_bar_start_side_container"
58            android:layout_height="match_parent"
59            android:layout_width="0dp"
60            android:clipChildren="false"
61            android:layout_weight="1">
62
63            <!-- Container that is wrapped around the views on the start half of the status bar.
64                 Its width will change with the number of visible children and sub-children.
65                 It is useful when we want to know the visible bounds of the content. -->
66            <!-- IMPORTANT: The height of this view *must* be match_parent so that the activity
67                 chips don't get cropped when they appear. See b/302160300 and b/366988057. -->
68            <FrameLayout
69                android:id="@+id/status_bar_start_side_content"
70                android:layout_width="wrap_content"
71                android:layout_height="match_parent"
72                android:layout_gravity="center_vertical|start"
73                android:clipChildren="false">
74
75                <include layout="@layout/heads_up_status_bar_layout" />
76
77                <!-- The alpha of the start side is controlled by PhoneStatusBarTransitions, and the
78                     individual views are controlled by StatusBarManager disable flags DISABLE_CLOCK
79                     and DISABLE_NOTIFICATION_ICONS, respectively -->
80                <!-- IMPORTANT: The height of this view *must* be match_parent so that the activity
81                 chips don't get cropped when they appear. See b/302160300 and b/366988057. -->
82                <LinearLayout
83                    android:id="@+id/status_bar_start_side_except_heads_up"
84                    android:layout_height="match_parent"
85                    android:layout_width="match_parent"
86                    android:layout_gravity="center_vertical|start"
87                    android:clipChildren="false">
88                    <ViewStub
89                        android:id="@+id/operator_name_stub"
90                        android:layout_width="wrap_content"
91                        android:layout_height="match_parent"
92                        android:layout="@layout/operator_name" />
93
94                    <com.android.systemui.statusbar.policy.Clock
95                        android:id="@+id/clock"
96                        android:layout_width="wrap_content"
97                        android:layout_height="@dimen/status_bar_system_icons_height"
98                        android:layout_gravity="center_vertical"
99                        android:textAppearance="@style/TextAppearance.StatusBar.Clock"
100                        android:singleLine="true"
101                        android:paddingStart="@dimen/status_bar_left_clock_starting_padding"
102                        android:paddingEnd="@dimen/status_bar_left_clock_end_padding"
103                        android:gravity="center_vertical|start"
104                    />
105
106                    <include layout="@layout/ongoing_activity_chip"
107                        android:id="@+id/ongoing_activity_chip_primary"/>
108
109                    <include layout="@layout/ongoing_activity_chip"
110                        android:id="@+id/ongoing_activity_chip_secondary"
111                        android:visibility="gone"/>
112
113                    <com.android.systemui.statusbar.AlphaOptimizedFrameLayout
114                        android:id="@+id/notification_icon_area"
115                        android:layout_width="wrap_content"
116                        android:layout_height="match_parent"
117                        android:orientation="horizontal"
118                        android:clipChildren="false"/>
119
120                </LinearLayout>
121            </FrameLayout>
122        </FrameLayout>
123
124        <!-- Space should cover the notch (if it exists) and let other views lay out around it -->
125        <android.widget.Space
126            android:id="@+id/cutout_space_view"
127            android:layout_width="0dp"
128            android:layout_height="match_parent"
129            android:gravity="center_horizontal|center_vertical"
130        />
131
132        <!-- Container for the entire end half of the status bar. It will always use the same
133             width, independent of the number of visible children and sub-children. -->
134        <FrameLayout
135            android:id="@+id/status_bar_end_side_container"
136            android:layout_width="0dp"
137            android:layout_height="match_parent"
138            android:layout_weight="1"
139            android:clipChildren="false">
140
141            <!-- Container that is wrapped around the views on the end half of the
142                 status bar. Its width will change with the number of visible children and
143                 sub-children.
144                 It is useful when we want know the visible bounds of the content.-->
145            <com.android.keyguard.AlphaOptimizedLinearLayout
146                android:id="@+id/status_bar_end_side_content"
147                android:layout_width="wrap_content"
148                android:layout_height="match_parent"
149                android:layout_gravity="end"
150                android:orientation="horizontal"
151                android:gravity="center_vertical|end"
152                android:clipChildren="false">
153
154                <include
155                    android:id="@+id/user_switcher_container"
156                    android:layout_width="wrap_content"
157                    android:layout_height="wrap_content"
158                    android:layout_marginEnd="@dimen/status_bar_user_chip_end_margin"
159                    layout="@layout/status_bar_user_chip_container" />
160
161                <include layout="@layout/system_icons"
162                     android:layout_gravity="center_vertical"
163                     android:layout_width="wrap_content"
164                     android:layout_height="@dimen/status_bar_system_icons_height" />
165            </com.android.keyguard.AlphaOptimizedLinearLayout>
166        </FrameLayout>
167    </LinearLayout>
168
169</com.android.systemui.statusbar.phone.PhoneStatusBarView>
170