![](/img/trans.png)
[英]Set WPF Label Content Alpha Transparency instead of entire control Opacity
[英]How to set opacity/alpha in SpannableString Android
如何在 Android 中使用SpannableStringBuilder
实际设置跨区文本的 alpha/opacity? 我想在一个TextView
实现这种设计:
主文本Current location
具有完全不透明度/alpha (1.0),子文本Kungstan 43
具有 84% 的不透明度。
我已将SpannableStringBuilder
设置如下:
SpannableStringBuilder OriginText = new SpannableStringBuilder();
OriginText.Append(OriginMainText + ", ");
int SubTextIndex = OriginText.Length();
OriginText.Append(OriginSubText);
OriginText.SetSpan(<what need to set here??>, SubTextIndex, OriginText.Length(), 0)
我应该放入什么对象<what need to set here??>
? 最接近的方法是设置前景色,但我更喜欢它是否可以设置 alpha/opacity。
您可以使用TextAppearanceSpan
。
OriginText.setSpan(new TextAppearanceSpan(...), SubTextIndex, OriginText.Length(), 0);
语法是:
TextAppearanceSpan(String family,
int style,
int size,
ColorStateList color,
ColorStateList linkColor)
这里对您来说重要的参数是ColorStateList color
,它的定义如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:color="@color/sample_focused" />
<item android:state_pressed="true"
android:state_enabled="false"
android:color="@color/sample_disabled_pressed" />
<item android:state_enabled="false"
android:color="@color/sample_disabled_not_pressed" />
<item android:color="@color/sample_default" />
</selector>
从 API 23 开始,items 可以选择定义一个android:alpha
属性来修改基色的不透明度,这是你想要的。 例如,以下项目具有您想要的 84% 不透明度:
<item android:state_enabled="false"
android:color="?android:attr/colorAccent"
android:alpha="0.84" />
要从资源中获取颜色定义,您可以使用:
ContextCompat.getColor(context, R.color.your_color);
更改不透明度的一种简单方法是将代表不透明度的 2 位数字连接到代表颜色的 6 位数字,例如,如果颜色为 0xFFFFFF,则具有半不透明度 (0x80) 的相同颜色将为 0x80FFFFFF。 然后使用 setSpan 将颜色应用到文本的一部分,如下所示:
spannable.setSpan(new ForegroundColorSpan(color), ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.