公司的老项目底部导航使用的是RadioButton + Fragment框架,最近有个新需求需要动态改变底部导航的样式,搜了很多文章都不太理想。最后就在准备放弃的时候,想到了Glide 可以把图片Url转为Drawable,拿到Drawable 后用代码写个selector,然后给RadioButton设置上去就行了,准备就绪,开干。
/**
* 设置底部导航 RadioButton 的selector
* @param radioButton
* @param normalUrl 默认图标URl
* @param checkedUrl 选中图标URL
*/
private void setRadioButtonSelectorDrawable(RadioButton radioButton, String normalUrl, String checkedUrl){
StateListDrawable stateListDrawable = new StateListDrawable();
//先加载默认样式
Glide.with(this)
.load(normalUrl)
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
//默认样式
stateListDrawable.addState(new int[]{-android.R.attr.state_checked}