You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取与?android:attr/fingerprintAuthDrawable对应的资源ID?

解决方法

你的布局中使用的?android:attr/fingerprintAuthDrawable是主题属性引用,并非固定的资源ID,所以没法直接找到一个通用的defaultID传入getResources().getDrawable()来恢复初始Drawable,推荐用以下两种方式处理:

  • 提前保存初始Drawable
    在页面初始化完成后(比如onViewCreated或onCreate阶段),先把ImageView的初始Drawable保存下来:

    // 调用mutate()避免后续修改Drawable时影响原对象
    Drawable defaultFingerprintDrawable = imageView.getDrawable().mutate();
    

    需要恢复时直接用保存的对象:

    imageView.setImageDrawable(defaultFingerprintDrawable);
    
  • 从主题中重新解析属性获取
    如果没提前保存,可以通过主题解析这个属性来获取对应的Drawable:

    TypedArray typedArray = getTheme().obtainStyledAttributes(new int[]{android.R.attr.fingerprintAuthDrawable});
    Drawable defaultDrawable = typedArray.getDrawable(0);
    typedArray.recycle(); // 必须回收TypedArray防止内存泄漏
    imageView.setImageDrawable(defaultDrawable);
    

    这种方式获取的是当前主题下该属性对应的Drawable,和布局初始设置的一致,但如果运行中主题发生变化,结果可能不同。

内容的提问来源于stack exchange,提问作者NovaDenizen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:52:04