android - SpannableStringBuilder 中文本和图像之间的对齐未居中
问题描述
所以我添加了一个快餐栏来通知用户成功或失败......但是文本和图标没有正确对齐,我不知道如何正确地做到这一点
fun notifyUserMessage(context: Context, contextView: View, message: String,
notificationType: NotificationTypes = NotificationTypes.ERROR){
val builderTextLeft = SpannableStringBuilder()
builderTextLeft.append(" $message")
builderTextLeft.setSpan(ImageSpan(context, R.drawable.ic_alertcircle), 0, 1, 0)
builderTextLeft.setSpan(
AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), 0,
builderTextLeft.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
val snackbar = Snackbar.make(contextView, builderTextLeft, Snackbar.LENGTH_LONG)
.setBackgroundTint(context.getColor(setBackground(notificationType)))
.setTextColor(context.getColor(R.color.gainsboro_00))
val params = snackbar.view.layoutParams as FrameLayout.LayoutParams
params.gravity = Gravity.TOP
params.height = 250
snackbar.animationMode = BaseTransientBottomBar.ANIMATION_MODE_FADE
snackbar.show()
}
但结果看起来像:
我希望文本与图标正确对齐,但还要确保“文本+图标”都在小吃栏中居中。
任何想法 ?
解决方案
试试这个解决方案:
public static SpannableStringBuilder decorateProTagInString(String name, Activity activity) {
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
spannableStringBuilder.append(name);
if (spannableStringBuilder.length() > 0) {
try {
spannableStringBuilder.setSpan(new RelativeSizeSpan(0.8f), spannableStringBuilder.length() - 7, spannableStringBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableStringBuilder.setSpan(new RoundedBackgroundSpan(activity), spannableStringBuilder.length() - 7, spannableStringBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
} catch (Exception exp) {
exp.printStackTrace();
}
}
return spannableStringBuilder;
return null;
}
函数调用:
AppUtils.decorateProTagInString(image + "message", activity);
否则请遵循:答案链接
感谢和赞赏。
推荐阅读
- r - 使用 Shiny 和 FlexDashboard 运行饼图时出现问题
- c# - 更新已打开的 Excel 工作簿 C#
- logging - JMeter同时登录控制台和日志查看器
- c# - 使用 Active Directory 的身份验证始终返回 true
- oop - Fortran 面向对象中的不确定行为,带有延迟和 non_overridable 过程以及 gcc 编译器
- regex - 服装产品名称的命名实体识别
- python - 通过 SFTP 以 UTF-8 格式上传到 blob
- java - 使用 (for) 语句从 Json 数组获取数据到 Java 中的按钮
- html - 如何在一个地方设置网页的字体样式而不被用户代理样式表覆盖
- excel - 安排、Visual Basic、Excel