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

时间:2017-03-22 22:09:34

标签: android

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

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

3 个答案:

答案 0 :(得分:0)

在版本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);
    }
}

答案 1 :(得分:0)

您应该使用ContextCompat获取颜色:

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

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

答案 2 :(得分:0)

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