使用 .setText() 方法时无法向文本添加颜色



[已解决] 这是解决我问题的代码:

answerTextViewEasy.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.correct_answer));


问题:

我正在尝试添加要与.setText方法一起显示的文本颜色。这是我尝试使用的,但是当我尝试使用以下代码时,它给了我两个错误(检查下面(。第一个超过 getColor ,说它需要最少的 API 23(我目前正在使用 15(。第二个给出警告"无法解析方法getTheme"。

任何人都得到了如何通过getColor并可能使用适用于 API 15 的另一种方法的提示,以及我将如何绕过并解决getTheme上的红色错误?

answerTextViewEasy.setText(answerText);
answerTextViewEasy.setTextColor(getResources().getColor(R.color.correct_answer, getContext().getTheme()));
answerTextViewEasy.setText(answerText);
answerTextViewEasy.setTextColor(getResources().getColor(R.color.incorrect_answer, getContext().getTheme()));

.

颜色: correct_answer = #00CC00incorrect_answer = #FF0000. 对于上下文,以下是我如何使用编码:

.

这是我的Java文件:

private void checkCorrectness (String chosenCountry) {
        if (chosenCountry.equals (countries.get (currentCountryIndex).split (".png")[0])) {
            for (int i = 1; i <= correctAnswer; i++) {
                currentScore = currentScore + i;
            }//for-loop ends here
            correctAnswer++;
            currentScore++;
            //String answer = Integer.toString(correctAnswer);
            //correctAnswerTextView.setText("Correct Answers: " + answer);
            String score = Integer.toString(currentScore);
            currentScoreTextView.setText(score);
            String answerText = chosenCountry;
            answerTextViewEasy.setText(answerText);
            answerTextViewEasy.setTextColor(getResources().getColor(
                    R.color.correct_answer, getContext().getTheme()));
        }else {
            currentLives--;
            String lives = Integer.toString(currentLives);
            currentLivesTextView.setText(lives);
            answerTextViewEasy.setText("Incorrect!");
            answerTextViewEasy.setTextColor(getResources().getColor(
                    R.color.incorrect_answer, getContext().getTheme()));
        }//else ends here
            try {
                randomize ();
            } catch (Exception e) {
                e.printStackTrace ();
            }//try-loop ends here
    }//checkCorrectness ends here

在版本 23 之后,仅具有参数颜色 id 的旧 getColor 方法被弃用。
您应该使用此函数来支持所有版本。

    public static final int getColor(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 23) {
        return ContextCompatApi23.getColor(context, id);
    } else {
        return context.getResources().getColor(id);
    }
}
你应该

使用ContextCompat来获取颜色:

answerTextViewEasy.setTextColor(ContextCompat.getColor(getContext(), R.color.correct_answer));

阅读 https://developer.android.com/reference/android/support/v4/content/ContextCompat.html 了解更多详情。

尝试使用 ContextCompat.getColor(getContext((, R.color.correct_answer(

最新更新