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