android - 如何从 ImageSpan 中的 xml 向量设置 Drawable

标签 android drawable android-drawable android-vectordrawable

如何从 ImageSpan 中的 xml 向量设置 Drawable? 我在下面使用这两种方法。但是我的图标没有显示。当我使用可绘制资源图标中的 png 时,会出现。任何想法?

private void setupEmptyListInfoBox() {
        Drawable icon = loadVectorFromResources(getActivity(), R.drawable.ic_add_circle_24dp);
        ImageSpan is = new ImageSpan(icon, DynamicDrawableSpan.ALIGN_BASELINE);
        String info = getString(R.string.empty_weight_list_info);
        int iconPosition = info.indexOf("|");

        SpannableString text = new SpannableString(info);
        text.setSpan(is, iconPosition, iconPosition + 1, 0);

        mEmptyListInfo.setText(text);
    }

public static Drawable loadVectorFromResources(Context context, int resId) {
    Drawable drawable;
    if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        drawable = VectorDrawableCompat.create(context.getResources(), resId, context.getTheme());
    } else {
        drawable = context.getResources().getDrawable(resId, context.getTheme());
    }
    return drawable;
}

最佳答案

我刚刚成功地将矢量加载到 ImageSpan 中:

Drawable myDrawable = AppCompatResources.getDrawable(context, R.drawable.my_drawable);
myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());

ImageSpan myImageSpan = new ImageSpan(myDrawable, ImageSpan.ALIGN_BASELINE);
SpannableString mySpannableString = new SpannableString(context.getString(R.string.my_string));
mySpannableString.setSpan(myImageSpan, 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE);

希望对您有所帮助。

关于android - 如何从 ImageSpan 中的 xml 向量设置 Drawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114033/

相关文章:

Android 可绘制对象对于 API <23 显示拉伸(stretch),对于 API 23 及更高版本显示正确

android - 如何在 xml 中重新创建此背景?

来自 Fragment 内部的 Android getDrawable()

java - 将View动画直接应用到Drawable而不是整个View

android - 如何创建多个上下文菜单?

android - 如果没有 onBindViewHolder 内的 anchor ,则不能使用 MenuPopupHelper

android - 你能在本地广播中使用待处理的 Intent 吗?

android - 如何正确使用 CyanogenMod 特定的 API

android - 在 android XML 上结合多个背景?

Android:在运行时更改形状颜色