Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SpannableString Android中设置不透明度/alpha_C#_Android_.net_Xamarin - Fatal编程技术网

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

C# 如何在SpannableString Android中设置不透明度/alpha,c#,android,.net,xamarin,C#,Android,.net,Xamarin,如何在Android中使用SpannableStringBuilder实际设置跨距文本的alpha/不透明度?我想在一个TextView中实现此设计: 主文本当前位置具有完全不透明度/alpha(1.0),子文本Kungstan 43具有84%的不透明度 我已将SpannableStringBuilder设置如下: SpannableStringBuilder OriginText = new SpannableStringBuilder(); OriginText.Append(Origin

如何在Android中使用
SpannableStringBuilder
实际设置跨距文本的alpha/不透明度?我想在一个
TextView
中实现此设计:

主文本
当前位置
具有完全不透明度/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)
SpannableStringBuilder OriginText=new SpannableStringBuilder();
追加(OriginMainText+“,”);
int subtedex=OriginText.Length();
附加(OriginSubText);
OriginText.SetSpan(,子索引,OriginText.Length(),0)

我应该在
中放置什么对象?最接近的方法是设置前景色,但我更喜欢它是否有办法设置alpha/不透明度。

您可以使用
文本外观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>
要从资源中获取颜色定义,可以使用:

ContextCompat.getColor(context, R.color.your_color);

这是一个相当简单的设计。即使没有不透明度,你也可以像你说的那样简单地改变前景颜色。@RacilHilan是的,只改变前景更容易,但需要我定义两种不同的颜色,而不是一种不透明度不同的颜色。这就是为什么我说,我更喜欢如果它有一种方法来设置alphaYes,但是用不透明度定义相同的颜色就像定义两种不同的颜色:)。你可以从我的回答中看出,这并不是减少工作量:)
ContextCompat.getColor(context, R.color.your_color);