【问题标题】:android switch gradually between two colored textsandroid在两个彩色文本之间逐渐切换
【发布时间】:2014-01-30 20:30:04
【问题描述】:

我有一个垂直搜索栏和两个文本视图。一个文本视图是透明的,另一个文本视图设置在另一个文本视图的正上方。当拖动搜索栏的拇指时,透明的文本视图进入视图,另一个文本视图逐渐变为透明(获得文本逐渐切换的效果)。问题是当文本为黑色时这很好用,但我需要用不同的颜色为每个单词的每两个字母着色。我尝试使用 setText(Html.fromHtml() 和 SpannableString 为文本着色。两种情况下的着色都可以正常工作,但我似乎无法在文本之间进行切换,有什么想法吗?

当文本为黑色时,它是这样工作的:

VerticalSeekBar vSeekBar2 = (VerticalSeekBar)findViewById(R.id.SeekBar02);
vSeekBar2.setMax(255);
vSeekBar2.setProgress(255);
vSeekBar2.setOnSeekBarChangeListener(new VerticalSeekBar.OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(VerticalSeekBar seekBar) {

}

@Override
public void onStartTrackingTouch(VerticalSeekBar seekBar) {

}

@Override
public void onProgressChanged(VerticalSeekBar seekBar, int progress,
        boolean fromUser) {
    ((TextView) findViewById(R.id.textvu)).setTextColor(Color.argb(progress, 0, 0, 0));
    ((TextView) findViewById(R.id.textvu2)).setTextColor(Color.argb((255-progress), 0, 0, 0));

【问题讨论】:

    标签: android alpha-transparency textcolor


    【解决方案1】:

    如果使用 Android 3.0+,则使用 setAlpha() 上的属性 View 而不是更改文本颜色。这使用浮点而不是从 0(透明)到 1.0(完整)的整数。这样做的好处是您可以更改整个 TextView 而不仅仅是 Text。

    如果使用 Android 2.3 或更低版本,则可以在 TextView 上使用 getPaint()。然后在给定的Paint 对象上应用setAlpha()。这将使用 0(透明)到 255(完整)之间的整数。这不会影响TextView 的其他属性,例如背景。

    【讨论】:

    • DeeV,感谢您的快速回复!我尝试为 Android 2.3.6 实施您的解决方案,但没有成功。在每个文本视图中,我都有一个词。每个单词的每两个字母都用两种不同颜色中的一种着色(单词“apple”将分为“ap”(红色)“pl”(绿色)“e”(再次红色)。我已经尝试使用 getPaint() 并应用 setAlpha() 但它并没有改变文本的透明度。我也尝试过创建自己的绘画对象,但这也不起作用。我使用 Html 为文本着色,可以吗是 setAlpha 不起作用的原因吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多