1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3xmlns:app="http://schemas.android.com/apk/res-auto" 4xmlns:tools="http://schemas.android.com/tools" 5xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" 6android:id="@+id/biometric_prompt_constraint_layout" 7android:layout_width="match_parent" 8android:layout_height="match_parent"> 9 10 <ImageView 11 android:id="@+id/background" 12 android:layout_width="0dp" 13 android:layout_height="0dp" 14 android:contentDescription="@string/cancel" 15 app:layout_constraintBottom_toBottomOf="parent" 16 app:layout_constraintEnd_toEndOf="parent" 17 app:layout_constraintStart_toStartOf="parent" 18 app:layout_constraintTop_toTopOf="parent" /> 19 20 <View 21 android:id="@+id/panel" 22 style="@style/AuthCredentialPanelStyle" 23 android:layout_width="0dp" 24 android:layout_height="0dp" 25 android:paddingHorizontal="16dp" 26 android:paddingVertical="16dp" 27 android:visibility="visible" 28 app:layout_constraintBottom_toBottomOf="parent" 29 app:layout_constraintRight_toLeftOf="@+id/rightGuideline" 30 app:layout_constraintLeft_toLeftOf="@+id/leftGuideline" 31 app:layout_constraintTop_toTopOf="@+id/topGuideline" /> 32 33 <com.android.systemui.biometrics.BiometricPromptLottieViewWrapper 34 android:id="@+id/biometric_icon" 35 android:layout_width="wrap_content" 36 android:layout_height="wrap_content" 37 app:layout_constraintBottom_toBottomOf="parent" 38 app:layout_constraintRight_toRightOf="parent" 39 app:layout_constraintLeft_toLeftOf="parent" 40 app:layout_constraintTop_toTopOf="parent" 41 tools:srcCompat="@tools:sample/avatars" /> 42 43 <ScrollView 44 android:id="@+id/scrollView" 45 android:layout_width="0dp" 46 android:layout_height="0dp" 47 android:paddingBottom="16dp" 48 android:paddingLeft="24dp" 49 android:paddingRight="12dp" 50 android:paddingTop="24dp" 51 android:fadeScrollbars="false" 52 app:layout_constraintBottom_toTopOf="@+id/button_bar" 53 app:layout_constraintRight_toLeftOf="@+id/midGuideline" 54 app:layout_constraintLeft_toLeftOf="@id/leftGuideline" 55 app:layout_constraintTop_toTopOf="@+id/topGuideline"> 56 57 <androidx.constraintlayout.widget.ConstraintLayout 58 android:id="@+id/innerConstraint" 59 android:layout_width="match_parent" 60 android:layout_height="wrap_content"> 61 62 <ImageView 63 android:id="@+id/logo" 64 android:contentDescription="@string/biometric_dialog_logo" 65 android:layout_width="@dimen/biometric_prompt_logo_size" 66 android:layout_height="@dimen/biometric_prompt_logo_size" 67 android:layout_gravity="center" 68 android:scaleType="fitXY" 69 android:visibility="visible" 70 app:layout_constraintStart_toStartOf="parent" 71 app:layout_constraintTop_toTopOf="parent" /> 72 73 <TextView 74 android:id="@+id/logo_description" 75 style="@style/TextAppearance.AuthCredential.LogoDescription" 76 android:layout_width="0dp" 77 android:layout_height="@dimen/biometric_prompt_logo_size" 78 android:gravity="start|center_vertical" 79 android:textAlignment="viewStart" 80 android:layout_marginStart="16dp" 81 app:layout_goneMarginStart="0dp" 82 app:layout_constraintBottom_toTopOf="@+id/title" 83 app:layout_constraintEnd_toEndOf="parent" 84 app:layout_constraintStart_toEndOf="@+id/logo" 85 app:layout_constraintTop_toTopOf="parent" /> 86 87 <TextView 88 android:id="@+id/title" 89 style="@style/TextAppearance.AuthCredential.Title" 90 android:layout_width="wrap_content" 91 android:layout_height="wrap_content" 92 android:gravity="@integer/biometric_dialog_text_gravity" 93 android:paddingHorizontal="0dp" 94 android:textAlignment="viewStart" 95 app:layout_constraintBottom_toTopOf="@+id/subtitle" 96 app:layout_constraintEnd_toEndOf="parent" 97 app:layout_constraintHorizontal_bias="0.0" 98 app:layout_constraintStart_toStartOf="parent" 99 app:layout_constraintTop_toBottomOf="@+id/logoBarrier" 100 app:layout_constraintVertical_bias="0.0" 101 app:layout_constraintVertical_chainStyle="packed" /> 102 103 <TextView 104 android:id="@+id/subtitle" 105 style="@style/TextAppearance.AuthCredential.Subtitle" 106 android:layout_width="wrap_content" 107 android:layout_height="wrap_content" 108 android:layout_marginTop="16dp" 109 android:gravity="@integer/biometric_dialog_text_gravity" 110 android:paddingHorizontal="0dp" 111 android:textAlignment="viewStart" 112 app:layout_constraintBottom_toTopOf="@+id/contentBarrier" 113 app:layout_constraintEnd_toEndOf="parent" 114 app:layout_constraintHorizontal_bias="0.0" 115 app:layout_constraintStart_toStartOf="parent" 116 app:layout_constraintTop_toBottomOf="@+id/title" /> 117 118 <LinearLayout 119 android:id="@+id/customized_view_container" 120 android:layout_width="match_parent" 121 android:layout_height="wrap_content" 122 android:layout_marginTop="24dp" 123 android:gravity="center_vertical" 124 android:orientation="vertical" 125 android:visibility="gone" 126 app:layout_constraintBottom_toBottomOf="parent" 127 app:layout_constraintEnd_toEndOf="parent" 128 app:layout_constraintHorizontal_bias="0.0" 129 app:layout_constraintStart_toStartOf="parent" 130 app:layout_constraintTop_toBottomOf="@+id/subtitle" 131 app:layout_constraintVertical_bias="0.0" /> 132 133 <TextView 134 android:id="@+id/description" 135 style="@style/TextAppearance.AuthCredential.Description" 136 android:layout_width="wrap_content" 137 android:layout_height="wrap_content" 138 android:layout_marginTop="24dp" 139 android:gravity="@integer/biometric_dialog_text_gravity" 140 android:paddingHorizontal="0dp" 141 android:textAlignment="viewStart" 142 app:layout_constraintBottom_toBottomOf="parent" 143 app:layout_constraintEnd_toEndOf="parent" 144 app:layout_constraintHorizontal_bias="0.0" 145 app:layout_constraintStart_toStartOf="parent" 146 app:layout_constraintTop_toBottomOf="@+id/subtitle" 147 app:layout_constraintVertical_bias="0.0" /> 148 149 <androidx.constraintlayout.widget.Barrier 150 android:id="@+id/logoBarrier" 151 android:layout_width="wrap_content" 152 android:layout_height="wrap_content" 153 app:barrierMargin="12dp" 154 app:barrierAllowsGoneWidgets="false" 155 app:barrierDirection="bottom" 156 app:constraint_referenced_ids="logo_description, logo" /> 157 158 <androidx.constraintlayout.widget.Barrier 159 android:id="@+id/contentBarrier" 160 android:layout_width="wrap_content" 161 android:layout_height="wrap_content" 162 app:barrierAllowsGoneWidgets="false" 163 app:barrierDirection="top" 164 app:constraint_referenced_ids="description, customized_view_container" /> 165 166 </androidx.constraintlayout.widget.ConstraintLayout> 167 </ScrollView> 168 169 <TextView 170 android:id="@+id/indicator" 171 style="@style/TextAppearance.AuthCredential.Indicator" 172 android:layout_width="wrap_content" 173 android:layout_height="wrap_content" 174 android:layout_marginTop="24dp" 175 android:accessibilityLiveRegion="assertive" 176 android:fadingEdge="horizontal" 177 android:gravity="center_horizontal" 178 android:scrollHorizontally="true" 179 android:maxLines="2" 180 app:layout_constraintBottom_toTopOf="@+id/button_bar" 181 app:layout_constraintEnd_toEndOf="@+id/biometric_icon" 182 app:layout_constraintStart_toStartOf="@+id/biometric_icon" 183 app:layout_constraintTop_toBottomOf="@+id/biometric_icon" 184 app:layout_constraintVertical_bias="0.0" 185 app:layout_constraintWidth_max="@dimen/biometric_dialog_indicator_max_width" /> 186 187 <include 188 android:id="@+id/button_bar" 189 layout="@layout/biometric_prompt_button_bar" 190 android:layout_width="0dp" 191 android:layout_height="wrap_content" 192 app:layout_constraintBottom_toTopOf="@id/bottomGuideline" 193 app:layout_constraintEnd_toEndOf="@id/scrollView" 194 app:layout_constraintStart_toStartOf="@id/scrollView" 195 app:layout_constraintTop_toBottomOf="@id/scrollView" /> 196 197 <!-- Guidelines for setting panel border --> 198 <androidx.constraintlayout.widget.Barrier 199 android:id="@+id/topBarrier" 200 android:layout_width="wrap_content" 201 android:layout_height="wrap_content" 202 app:barrierAllowsGoneWidgets="false" 203 app:barrierDirection="top" 204 app:constraint_referenced_ids="scrollView" /> 205 206 <androidx.constraintlayout.widget.Guideline 207 android:id="@+id/leftGuideline" 208 android:layout_width="wrap_content" 209 android:layout_height="wrap_content" 210 android:orientation="vertical" 211 app:guidelineUseRtl="false" 212 app:layout_constraintGuide_begin="@dimen/biometric_dialog_border_padding" /> 213 214 <androidx.constraintlayout.widget.Guideline 215 android:id="@+id/rightGuideline" 216 android:layout_width="wrap_content" 217 android:layout_height="wrap_content" 218 android:orientation="vertical" 219 app:guidelineUseRtl="false" 220 app:layout_constraintGuide_end="@dimen/biometric_dialog_border_padding" /> 221 222 <androidx.constraintlayout.widget.Guideline 223 android:id="@+id/midGuideline" 224 android:layout_width="wrap_content" 225 android:layout_height="wrap_content" 226 android:orientation="vertical" 227 app:guidelineUseRtl="false" 228 app:layout_constraintGuide_begin="406dp" /> 229 230 <androidx.constraintlayout.widget.Guideline 231 android:id="@+id/bottomGuideline" 232 android:layout_width="wrap_content" 233 android:layout_height="wrap_content" 234 android:orientation="horizontal" 235 app:layout_constraintGuide_end="40dp" /> 236 237 <androidx.constraintlayout.widget.Guideline 238 android:id="@+id/topGuideline" 239 android:layout_width="0dp" 240 android:layout_height="0dp" 241 android:orientation="horizontal" 242 app:layout_constraintGuide_begin="0dp" /> 243 244</androidx.constraintlayout.widget.ConstraintLayout> 245