You can use this workaround for example. Customize Chip:
public class GlideChip extends Chip {
public GlideChip(Context context) {
super(context);
}
public GlideChip(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Set an image from an URL for the {@link Chip} using {@link com.bumptech.glide.Glide}
* @param url icon URL
* @param errDrawable error icon if Glide return failed response
*/
public GlideChip setIconUrl(String url, Drawable errDrawable) {
Glide.with(this)
.load(url)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
setChipIcon(errDrawable);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
setChipIcon(resource);
return false;
}
}).preload();
return this;
}
}
Create GlideChip, add to the chip group and start the project:
public class ChipFragment extends Fragment {
private ChipGroup chipGroup;
public ChipFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_chip, container, false);
chipGroup = view.findViewById(R.id.chipGroup);
Chip chip = createChip("John Doe", "https://i1.sndcdn.com/avatars-000197335271-mztyvq-t500x500.jpg");
chipGroup.addView(chip);
return view;
}
private Chip createChip(String name, String avatarUrl) {
GlideChip chip = new GlideChip(getContext());
chip.setText(name);
chip.setIconUrl(avatarUrl, getResources().getDrawable(R.drawable.err_avatar));
chip.setClickable(true);
chip.setFocusable(true);
return chip;
}
}
P/S... Don't forget to add Glide to build.gradle. See here