You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何设置ArrayList元素及前缀文本的显示颜色

在Android中实现TextView不同片段显示不同颜色,需要使用SpannableStringBuilder配合ForegroundColorSpan完成,直接替换原有文本拼接、设置逻辑即可,修改后的完整代码如下:

import android.graphics.Color;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;

// ... 原有类和其他逻辑保持不变
{
    List<Integer> primeNumbers = new ArrayList<>();
    String firstNumber = edtFNum.getText().toString();
    String secondNumber = edt2Num.getText().toString();
    for (int i = Integer.parseInt(firstNumber); i <= Integer.parseInt(secondNumber); i++) {
        boolean isPrime = true;
        for (int j = 2; j <= i / 2; j++) {
            if (i % j == 0) {
                isPrime = false;
                break;
            }
        }
        if (isPrime) {
            primeNumbers.add(i);
        }
    }
    txtResult.setMovementMethod(new ScrollingMovementMethod());

    // ------------ 以下为新增的样式设置逻辑 ------------
    SpannableStringBuilder ssb = new SpannableStringBuilder();
    // 1. 处理开头红色文字
    String redText = "Prime numbers between";
    ssb.append(redText);
    ssb.setSpan(new ForegroundColorSpan(Color.RED), 0, redText.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);

    // 2. 拼接范围和提示文字(默认样式,可按需修改)
    ssb.append(" " + firstNumber + " and " + secondNumber + " are: ");

    // 3. 处理素数交替颜色
    for (int i = 0; i < primeNumbers.size(); i++) {
        String numStr = String.valueOf(primeNumbers.get(i));
        int start = ssb.length();
        ssb.append(numStr);
        // 从0开始计数,第一个元素(索引0)蓝色,第二个(索引1)绿色,循环交替
        if (i % 2 == 0) {
            ssb.setSpan(new ForegroundColorSpan(Color.BLUE), start, ssb.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
        } else {
            ssb.setSpan(new ForegroundColorSpan(Color.GREEN), start, ssb.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        // 非末尾元素加逗号分隔
        if (i != primeNumbers.size() - 1) {
            ssb.append(", ");
        }
    }

    // 4. 设置最终文本
    txtResult.setText(ssb);
}

补充说明

如果你需要使用自定义色值代替系统自带颜色,可以把Color.RED/Color.BLUE/Color.GREEN替换为ContextCompat.getColor(context, R.color.你的自定义颜色名)即可。

内容的提问来源于stack exchange,提问作者user16731355

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:24:03