当前位置: 首页 > 知识库问答 >
问题:

如何在SpannableString Android中设置不透明度/alpha

扶文光
2023-03-14

如何在Android系统中使用SpannableStringBuilder为跨文本设置alpha/不透明度?我想在一个文本视图中实现这个设计:

主文本当前位置具有完全不透明度/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)

我应该在


共有2个答案

羊慈
2023-03-14

更改不透明度的一种简单方法是将表示不透明度的2位数字连接到表示颜色的6位数字,例如,如果颜色为0xFFFFFF,则具有半不透明度(0x80)的相同颜色将为0x80FFFFFF。然后使用setSpan将颜色应用于文本的一部分,如下所示:

spannable.setSpan(new ForegroundColorSpan(color), ...) 
钮鸿煊
2023-03-14

您可以使用文本外观span

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开始,项目可以选择定义一个android: alpha属性来修改基础颜色的不透明度,这是您想要的。例如,以下项目具有您想要的84%的不透明度:

<item android:state_enabled="false"
      android:color="?android:attr/colorAccent"
      android:alpha="0.84" />

要从资源中获取颜色定义,可以使用:

ContextCompat.getColor(context, R.color.your_color);
 类似资料:
  • 问题内容: 假设我要使JPanel%20的不透明度可见。我的意思不是setOpaque(绘制或不绘制)或setVisible(显示或隐藏)…我的意思是使其透明JPanel ..您知道吗? 这可能吗? 问题答案: 您还应该查看具有透明度的背景,以了解使用此功能时可能遇到的任何绘画问题。

  • 问题内容: 嘿,我正在Google搜寻,但我找不到完美的答案 我想在父级DIV中设置不透明度,但在子级DIV中不设置透明度 例 的HTML CSS 注: - 我想 背景图像 中没有颜色 问题答案: 如果您在伪类中定义 背景图像 ,可能会很好。这样写:

  • 我想为包含十六进制颜色代码的容器添加不透明度。我是新来的。请帮帮我。这是代码。提前感谢。

  • 我在滚动窗格中有一个带有按钮的网格窗格。当所需的按钮数量不足以填充ScrollPane的最大大小时,它看起来像下面的图像。我需要将这个空白点设置为包含它的窗格的背景色。 我尝试将网格的背景颜色设置为包含它的背景窗格的相同颜色,但它只是用按钮为线条着色。如果我尝试将ScrollPane的不透明度设置为0,它也设置了按钮的不透明度,所以我看不到任何东西,即使我设置了按钮的不透明度之后。 我怎么能这么做

  • 问题内容: 是否可以设置和获取布局的Alpha /不透明度及其所有子视图?我不是在说背景。在相对布局中说出视频控件的集合,例如播放,暂停和进度条。 我可以使用动画淡入淡出,但想知道是否可以使用直接方法。 问题答案: 您可以使用持续时间为0的AlphaAnimation和setFillAfter选项在布局及其子级(或其他任何视图)上设置Alpha。 例: 您可以将一个动画用于多个组件以节​​省内存。

  • 我试图应用到中的Geojson层。留档似乎显示可以在样式配置中设置。 我想对象掩蔽/隐藏背景图。在这里,使用,颜色会应用到生成的,并且显示多边形。 但是,值似乎被忽略。 我还尝试使用的方法,但没有效果。 如何在传单中设置geojson对象或层的不透明度? 使用传单-传单-v0。5.1-0-gc1d410f。拉链