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>