gpt4 book ai didi

android - ImageSpan 不适用于 Android 5

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:04 31 4
gpt4 key购买 nike

我的这个函数在 Android 4.4.1 上运行良好,但在 5.0+ 上就失效了。

  public static SpannableStringBuilder prependImage(Drawable drawable, String text) {
SpannableStringBuilder builder = new SpannableStringBuilder(" " + text);
builder.setSpan(new ImageSpan(drawable), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return builder;
}

我是这样使用它的:

class MyButton extends Button {

// ... snip ...

setText(
prependImage(
getDrawable(imageResource, color),
getContext().getString(stringResource)),
BufferType.SPANNABLE);

这是上面引用的 getDrawable() 方法:

 private Drawable getDrawable(int resource, int color) {
final Resources resources = getContext().getResources();
Drawable drawable = resources.getDrawable(resource);
if (drawable != null) {
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}
return drawable;
}

当我调试时,似乎一切都成功了,但没有绘制图像。知道我可能做错了什么吗?

最佳答案

默认情况下,在 Material 中按钮的样式设置为以全大写形式显示文本。但是,用于大写的 AllCapsTransformationMethod 中存在一个错误,导致它丢弃 Spannable 数据。

您可以通过在按钮上指定 android:textAllCaps="false"来覆盖默认按钮样式并禁用全部大写。

<Button
...
android:textAllCaps="false" />

看看here

关于android - ImageSpan 不适用于 Android 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257606/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com