1<!--
2  ~ Copyright (C) 2019 The Android Open Source Project
3  ~
4  ~ Licensed under the Apache License, Version 2.0 (the "License");
5  ~ you may not use this file except in compliance with the License.
6  ~ You may obtain a copy of the License at
7  ~
8  ~      http://www.apache.org/licenses/LICENSE-2.0
9  ~
10  ~ Unless required by applicable law or agreed to in writing, software
11  ~ distributed under the License is distributed on an "AS IS" BASIS,
12  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  ~ See the License for the specific language governing permissions and
14  ~ limitations under the License.
15  -->
16<!-- TODO(b/251476085): inline in biometric_prompt_layout after Biometric*Views are un-flagged -->
17<merge xmlns:android="http://schemas.android.com/apk/res/android">
18
19    <TextView
20        android:id="@+id/title"
21        android:layout_width="match_parent"
22        android:layout_height="wrap_content"
23        android:gravity="@integer/biometric_dialog_text_gravity"
24        android:singleLine="true"
25        android:marqueeRepeatLimit="1"
26        android:ellipsize="marquee"
27        android:importantForAccessibility="no"
28        style="@style/TextAppearance.AuthCredential.Title"/>
29
30    <TextView
31        android:id="@+id/subtitle"
32        android:layout_width="match_parent"
33        android:layout_height="wrap_content"
34        android:gravity="@integer/biometric_dialog_text_gravity"
35        android:singleLine="true"
36        android:marqueeRepeatLimit="1"
37        android:ellipsize="marquee"
38        android:importantForAccessibility="no"
39        style="@style/TextAppearance.AuthCredential.Subtitle"/>
40
41    <TextView
42        android:id="@+id/description"
43        android:layout_width="match_parent"
44        android:layout_height="wrap_content"
45        android:scrollbars ="vertical"
46        style="@style/TextAppearance.AuthCredential.Description"/>
47
48    <Space android:id="@+id/space_above_icon"
49        android:layout_width="match_parent"
50        android:layout_height="48dp" />
51
52    <FrameLayout
53        android:id="@+id/biometric_icon_frame"
54        android:layout_width="wrap_content"
55        android:layout_height="wrap_content"
56        android:layout_gravity="center">
57
58        <include layout="@layout/auth_biometric_icon"/>
59
60        <com.android.systemui.biometrics.BiometricPromptLottieViewWrapper
61            android:id="@+id/biometric_icon_overlay"
62            android:layout_width="wrap_content"
63            android:layout_height="wrap_content"
64            android:layout_gravity="center"
65            android:contentDescription="@null"
66            android:scaleType="fitXY" />
67    </FrameLayout>
68
69    <!-- For sensors such as UDFPS, this view is used during custom measurement/layout to add extra
70         padding so that the biometric icon is always in the right physical position. -->
71    <Space android:id="@+id/space_below_icon"
72        android:layout_width="match_parent"
73        android:layout_height="12dp" />
74
75    <TextView
76        android:id="@+id/indicator"
77        android:layout_width="match_parent"
78        android:layout_height="wrap_content"
79        android:paddingHorizontal="24dp"
80        android:textSize="12sp"
81        android:gravity="center_horizontal"
82        android:accessibilityLiveRegion="polite"
83        android:singleLine="true"
84        android:ellipsize="marquee"
85        android:marqueeRepeatLimit="marquee_forever"
86        android:scrollHorizontally="true"
87        android:fadingEdge="horizontal"
88        android:textColor="@color/biometric_dialog_gray"/>
89
90    <LinearLayout
91        android:id="@+id/button_bar"
92        android:layout_width="match_parent"
93        android:layout_height="88dp"
94        style="?android:attr/buttonBarStyle"
95        android:orientation="horizontal"
96        android:paddingTop="24dp">
97
98        <Space android:id="@+id/leftSpacer"
99            android:layout_width="8dp"
100            android:layout_height="match_parent"
101            android:visibility="visible" />
102
103        <!-- Negative Button, reserved for app -->
104        <Button android:id="@+id/button_negative"
105            android:layout_width="wrap_content"
106            android:layout_height="wrap_content"
107            style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
108            android:layout_gravity="center_vertical"
109            android:ellipsize="end"
110            android:maxLines="2"
111            android:maxWidth="@dimen/biometric_dialog_button_negative_max_width"/>
112        <!-- Cancel Button, replaces negative button when biometric is accepted -->
113        <Button android:id="@+id/button_cancel"
114            android:layout_width="wrap_content"
115            android:layout_height="wrap_content"
116            style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
117            android:layout_gravity="center_vertical"
118            android:maxWidth="@dimen/biometric_dialog_button_negative_max_width"
119            android:text="@string/cancel"
120            android:visibility="gone"/>
121        <!-- "Use Credential" Button, replaces if device credential is allowed -->
122        <Button android:id="@+id/button_use_credential"
123            android:layout_width="wrap_content"
124            android:layout_height="wrap_content"
125            style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
126            android:layout_gravity="center_vertical"
127            android:maxWidth="@dimen/biometric_dialog_button_negative_max_width"
128            android:visibility="gone"/>
129
130        <Space android:id="@+id/middleSpacer"
131            android:layout_width="0dp"
132            android:layout_height="match_parent"
133            android:layout_weight="1"
134            android:visibility="visible"/>
135
136        <!-- Positive Button -->
137        <Button android:id="@+id/button_confirm"
138            android:layout_width="wrap_content"
139            android:layout_height="wrap_content"
140            style="@*android:style/Widget.DeviceDefault.Button.Colored"
141            android:layout_gravity="center_vertical"
142            android:ellipsize="end"
143            android:maxLines="2"
144            android:maxWidth="@dimen/biometric_dialog_button_positive_max_width"
145            android:text="@string/biometric_dialog_confirm"
146            android:visibility="gone"/>
147        <!-- Try Again Button -->
148        <Button android:id="@+id/button_try_again"
149            android:layout_width="wrap_content"
150            android:layout_height="wrap_content"
151            style="@*android:style/Widget.DeviceDefault.Button.Colored"
152            android:layout_gravity="center_vertical"
153            android:ellipsize="end"
154            android:maxLines="2"
155            android:maxWidth="@dimen/biometric_dialog_button_positive_max_width"
156            android:text="@string/biometric_dialog_try_again"
157            android:visibility="gone"/>
158
159        <Space android:id="@+id/rightSpacer"
160            android:layout_width="8dp"
161            android:layout_height="match_parent"
162            android:visibility="visible" />
163    </LinearLayout>
164
165</merge>