动态设置图像到自定义imageview类android

时间:2018-04-19 12:15:11

标签: android image android-glide

我想将网址加载到ImageView中并且该网址是动态的,因此我创建了这样的自定义Imageview类

public class CustomLocalCurrencyImageViewWhiteColor extends AppCompatImageView {
public CustomLocalCurrencyImageViewWhiteColor(Context context) {
    super(context);
    Glide.with(context).load(SessionManager.getCountryWiseDataObject(context).getCurrencyImageWhite()).into(this);
}

public CustomLocalCurrencyImageViewWhiteColor(Context context, AttributeSet attrs) {
    super(context, attrs);
    Glide.with(context).load(SessionManager.getCountryWiseDataObject(context).getCurrencyImageWhite()).into(this);
}

public CustomLocalCurrencyImageViewWhiteColor(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    Glide.with(context).load(SessionManager.getCountryWiseDataObject(context).getCurrencyImageWhite()).into(this);
}

}

。当我按照以下方式使用它时工作正常

 <com.kiran.example.ebitcoin.customview.CustomLocalCurrencyImageViewWhiteColor
        android:id="@+id/img"
        android:layout_width="@dimen/imageSizeTooSmallBTCLogo"
        android:layout_height="@dimen/imageSizeTooSmallBTCLogo"
        android:layout_gravity="center_vertical" />

现在,我想动态地更改此自定义图像的图像资源,所以我尝试了

 CustomLocalCurrencyImageViewWhiteColor img = findViewById(R.id.img);
    img.setImageResource(R.drawable.ic_bitcoin_24_white);

但不幸的是,没有任何改变。如何动态更改自定义图像视图类的图像?有人找到了答案吗?

3 个答案:

答案 0 :(得分:0)

当您展开AppCompatImageView时,您可以执行以下操作:

Drawable drawable = AppCompatDrawableManager.get().getDrawable(getApplicationContext(), R.drawable.ic_bitcoin_24_white); 
img.setImageResource(drawable);

答案 1 :(得分:0)

首先你已经使用了Glide,所以试试这样做:

在CustomLocalCurrencyImageViewWhiteColor中创建setImageWithGlide方法

public void setImageWithGlide(Context context, String imagePath) {
   Glide.with(context).load(imagePath).into(this)
}

public void setImageWithGlide(Context context, Integer resId) {
   Glide.with(context).load(resId).into(this)
}

你可以像这样使用它:

img.setImageWithGlide(imagePath);

或者如果你使用resourceId

img.setImageWithGlide(R.drawable.image);

答案 2 :(得分:0)

最后,我回答了自己的问题。我按照this,按照以下方式完成了代码。

public class CustomLocalCurrencyImageViewWhiteColor extends AppCompatImageView {
Context context;
public CustomLocalCurrencyImageViewWhiteColor(Context context) {
    super(context);
    Glide.with(context).load(SessionManager.getCountryWiseDataObject(context).getCurrencyImageWhite()).into(this);
}

public CustomLocalCurrencyImageViewWhiteColor(Context context, AttributeSet attrs) {
    super(context, attrs);
    Glide.with(context).load(SessionManager.getCountryWiseDataObject(context).getCurrencyImageWhite()).into(this);
}

public CustomLocalCurrencyImageViewWhiteColor(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    Glide.with(context).load(SessionManager.getCountryWiseDataObject(context).getCurrencyImageWhite()).into(this);
}

public void setImageWithGlide(Context context, Integer resId) {
    this.context = context;
    Glide.with(context).load("").placeholder(resId).into(this);
}

}

要动态更改图像,

CustomLocalCurrencyImageViewWhiteColor img = findViewById(R.id.img);
    img.setImageWithGlide(this, R.drawable.image);