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
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        style="@style/TextAppearance.AuthCredential.Title"/>
25
26    <TextView
27        android:id="@+id/subtitle"
28        android:layout_width="match_parent"
29        android:layout_height="wrap_content"
30        android:gravity="@integer/biometric_dialog_text_gravity"
31        style="@style/TextAppearance.AuthCredential.Subtitle"/>
32
33    <TextView
34        android:id="@+id/description"
35        android:layout_width="match_parent"
36        android:layout_height="wrap_content"
37        android:gravity="@integer/biometric_dialog_text_gravity"
38        style="@style/TextAppearance.AuthCredential.Description"/>
39
40    <Space android:id="@+id/space_above_icon"
41        android:layout_width="match_parent"
42        android:layout_height="48dp" />
43
44    <FrameLayout
45        android:id="@+id/biometric_icon_frame"
46        android:layout_width="match_parent"
47        android:layout_height="wrap_content"
48        android:layout_gravity="center_horizontal">
49
50        <ImageView
51            android:id="@+id/biometric_icon"
52            android:layout_width="@dimen/biometric_dialog_biometric_icon_size"
53            android:layout_height="@dimen/biometric_dialog_biometric_icon_size"
54            android:layout_gravity="center"
55            android:contentDescription="@null"
56            android:scaleType="fitXY" />
57
58    </FrameLayout>
59
60    <!-- For sensors such as UDFPS, this view is used during custom measurement/layout to add extra
61         padding so that the biometric icon is always in the right physical position. -->
62    <Space android:id="@+id/space_below_icon"
63        android:layout_width="match_parent"
64        android:layout_height="12dp" />
65
66    <TextView
67        android:id="@+id/indicator"
68        android:layout_width="match_parent"
69        android:layout_height="wrap_content"
70        android:paddingHorizontal="24dp"
71        android:textSize="12sp"
72        android:gravity="center_horizontal"
73        android:accessibilityLiveRegion="polite"
74        android:singleLine="true"
75        android:ellipsize="marquee"
76        android:marqueeRepeatLimit="marquee_forever"
77        android:scrollHorizontally="true"
78        android:fadingEdge="horizontal"
79        android:textColor="@color/biometric_dialog_gray"/>
80
81    <LinearLayout
82        android:id="@+id/button_bar"
83        android:layout_width="match_parent"
84        android:layout_height="88dp"
85        style="?android:attr/buttonBarStyle"
86        android:orientation="horizontal"
87        android:paddingTop="24dp">
88
89        <Space android:id="@+id/leftSpacer"
90            android:layout_width="8dp"
91            android:layout_height="match_parent"
92            android:visibility="visible" />
93
94        <!-- Negative Button, reserved for app -->
95        <Button android:id="@+id/button_negative"
96            android:layout_width="wrap_content"
97            android:layout_height="wrap_content"
98            style="@*android:style/Widget.DeviceDefault.Button.Borderless.Colored"
99            android:layout_gravity="center_vertical"
100            android:ellipsize="end"
101            android:maxLines="2"
102            android:maxWidth="@dimen/biometric_dialog_button_negative_max_width"/>
103        <!-- Cancel Button, replaces negative button when biometric is accepted -->
104        <Button android:id="@+id/button_cancel"
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:maxWidth="@dimen/biometric_dialog_button_negative_max_width"
110            android:text="@string/cancel"
111            android:visibility="gone"/>
112        <!-- "Use Credential" Button, replaces if device credential is allowed -->
113        <Button android:id="@+id/button_use_credential"
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:visibility="gone"/>
120
121        <Space android:id="@+id/middleSpacer"
122            android:layout_width="0dp"
123            android:layout_height="match_parent"
124            android:layout_weight="1"
125            android:visibility="visible"/>
126
127        <!-- Positive Button -->
128        <Button android:id="@+id/button_confirm"
129            android:layout_width="wrap_content"
130            android:layout_height="wrap_content"
131            style="@*android:style/Widget.DeviceDefault.Button.Colored"
132            android:layout_gravity="center_vertical"
133            android:ellipsize="end"
134            android:maxLines="2"
135            android:maxWidth="@dimen/biometric_dialog_button_positive_max_width"
136            android:text="@string/biometric_dialog_confirm"
137            android:visibility="gone"/>
138        <!-- Try Again Button -->
139        <Button android:id="@+id/button_try_again"
140            android:layout_width="wrap_content"
141            android:layout_height="wrap_content"
142            style="@*android:style/Widget.DeviceDefault.Button.Colored"
143            android:layout_gravity="center_vertical"
144            android:ellipsize="end"
145            android:maxLines="2"
146            android:maxWidth="@dimen/biometric_dialog_button_positive_max_width"
147            android:text="@string/biometric_dialog_try_again"
148            android:visibility="gone"/>
149
150        <Space android:id="@+id/rightSpacer"
151            android:layout_width="8dp"
152            android:layout_height="match_parent"
153            android:visibility="visible" />
154    </LinearLayout>
155
156</merge>