【问题标题】:How to load drawable lazily from xml resource? Resource id only at first not the whole drawable image如何从 xml 资源中延迟加载可绘制对象?资源 id 最初只是不是整个可绘制图像
【发布时间】:2025-11-22 07:45:02
【问题描述】:

我正在使用volley的NetworkImageView

我想在 xml 资源的 NetworkImageView 上设置可绘制图像资源 id 和错误可绘制资源 id。 所以,我修改了源代码,它可以工作了。

java

    public NetworkImageView(Context context,
    ...
         final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.NetworkImageView, defStyle, 0);
    mDefaultDrawable = ta.getDrawable(R.styleable.NetworkImageView_defaultImage);
    mErrorDrawable = ta.getDrawable(R.styleable.NetworkImageView_errorImage);

xml

<...NetworkImageView
    xmlns:custom="http://schemas.android.com/apk/res/..."
    custom:resultScaleType="centerCrop"
    custom:errorImage="@drawable/no_image_icon"
    custom:errorScaleType="centerInside"
    custom:loupeViewId="@id/..."
            ...
/>       

但是,问题是,NetworkImageView 总是在第一次加载默认和错误绘制时,即使它们不是必需的。

当我在ListView 上显示许多ImageViews 时,我认为有太多的浪费。

我想在需要时加载资源。所以,我想一开始只加载资源ID。

TypedArray.getResourceId()TypedArray.getInt() 都不起作用。

你能帮帮我吗?

【问题讨论】:

  • 你尝试过使用 stubView 吗?

标签: android android-volley


【解决方案1】:

来自开发者:

ViewStub 是一个不可见的、大小为零的 View,可用于懒惰 在运行时膨胀布局资源。

也许这条信息可以让你受益??

【讨论】:

  • 感谢您的回答。但是,我认为 ViewStub 无法帮助我,因为我只需要膨胀一个 ImageView 来更改“defaultImage --> resultImage”或“defaultImage --> errorImage”。
最近更新 更多