android - 自定义 BiometricPrompt.Builder

标签 android kotlin

我们可以修改/定制我们的 BiometricPrompt ?

例如,现在我像这样使用 smth:

BiometricPrompt.Builder(AppResources.appContext)
            .setTitle("title")
            .setSubtitle("subTitle")
            .setDescription("description")
            .setNegativeButton("Cancel", AppResources.appContext?.mainExecutor,
                    DialogInterface.OnClickListener { dialogInterface, i -> biometricCallback.onAuthenticationCancelled() })
            .build()
            .authenticate(CancellationSignal(), AppResources.appContext?.mainExecutor,
                    BiometricCallbackV28(biometricCallback))

我是否有能力更改文本、标题、negativeButton 的样式?颜色?

最佳答案

更新 2:beta01

alpha 版本的变化是指纹对话框使用 android.app.AlertDialog而新的 beta01 使用 androidx.appcompat.app.AlertDialog它具有私有(private)风格。

然后要覆盖该样式,我们必须覆盖 androidx.appcompat.R.attr.alertDialogTheme引用我们的styles.xml,我们可以替换<item name="android:alertDialogTheme">@style/CustomAlertTheme</item>通过 <item name="alertDialogTheme">@style/CustomAlertTheme</item>在我的情况下,我只想更改按钮文本颜色,我只是添加了 <item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>和正数相同,因为替换 alertDialogTheme改变我不想做的其他事情。

我现在的styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:buttonStyle">@style/WibleButtonStyle</item>
        <item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
 </style>

<style name="NegativeButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
        <item name="android:textSize">16sp</item>
        <item name="android:textColor">@color/dark_blue</item>
</style>

更新:beta01

这个技巧不再起作用了。如果我能找到另一种方法,我会尝试。

我找到了两种方法,这些都不是特定于 BiometricPrompt 的,一种是覆盖主题按钮样式:<item name="android:buttonStyle">@style/CustomButtonStyle</item>
另一种选择是覆盖您的警报对话框主题:

应用主题风格
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
    <style name="AlertDialogTheme" parent="ThemeOverlay.AppCompat.Dialog.Alert">
        <item name="android:buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
        <item name="android:buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item>
    </style>

    <style name="NegativeButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
        <item name="android:textSize">10sp</item>
        <item name="android:textColor">@color/primary_text</item>
    </style>

    <style name="PositiveButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
        <item name="android:textColor">@color/primary_text</item>
    </style>

然后您可以将特定主题应用于特定 Activity 。也许他们可以打开 API 以允许样式,但我不得不更改颜色,因为无法看到按钮(一切都是白色的),这就是我发现解决问题的方法。我希望它对你有帮助。

关于android - 自定义 BiometricPrompt.Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52277622/

相关文章:

java - 在 Spring 中动态注入(inject)类

android - 为什么每次从 Kotlin 的 ListPreference 中选择一个项目后,val 变量总是会改变?

android - android studio 1.4中的ActionBar

android - 如何在 PhoneGap Android 中的 Touchstart 事件上使用 jQuery Mobile 滑动页面

java - 当我按回我的程序时,我看到一个空白屏幕

android - Dagger 2 错误 : dependency “cannot be provided without an @Inject constructor”

android - 无法将字符串转换为西类牙语日期

android - 如何从 R.raw 资源获取 java.io.File

android - 如何检查用户设备上安装的 Google Play GAMES 版本

android - 需要了解 Audio Record 和 AudioTrack 如何用于原始 PCM 捕获和播放