用户类型时无法使TextView更改颜色

时间:2017-08-19 03:44:23

标签: android

我对Android开发人员来说非常新,但我真的很喜欢它:)我想为我玩的游戏制作一个计算器应用程序来计算它从水平上升多久所需的时间a到使用各种方法的b级。到目前为止,我做得还不错,但是现在遇到了这个错误,这真的让我烦恼。
我想将文本颜色变为红色,如果他们输入的数字低于使用游戏的所需经验。例如,桃花心木日志需要400000xp才能使用,因此如果输入<400000,我希望带有桃花心木日志的TextView变为红色。希望我有意义哈哈:)目前,当我输入任何数字时,他们都只是改变红色,不要随用户输入改变:(任何帮助将不胜感激!:)这是应用程序界面的屏幕截图,所以你可以看到我的意思{ {3}}

numspace1.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            Double numb1 = Double.parseDouble(numspace1.getText().toString());
            if (numb1 >= 6517253 && numb1 <= 10692628) {
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 5346332 && numb1 <= 6517252) {
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 3972294 && numb1 <= 5346331) {
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 3258594 && numb1 <= 3972293) {
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 2421087 && numb1 <= 3258593) {
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 1475581 && numb1 <= 2421086) {
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 273742 && numb1 <= 1475580) {
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 123660 && numb1 <= 273741) {
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 83014 && numb1 <= 123659) {
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 22406 && numb1 <= 83013) {
                p5.setTextColor(Color.RED);
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 13363 && numb1 <= 22405) {
                p4.setTextColor(Color.RED);
                p5.setTextColor(Color.RED);
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            } else if (numb1 >= 0 && numb1 <= 13362) {
                p2.setTextColor(Color.RED);
                p3.setTextColor(Color.RED);
                p4.setTextColor(Color.RED);
                p5.setTextColor(Color.RED);
                p6.setTextColor(Color.RED);
                p7.setTextColor(Color.RED);
                p8.setTextColor(Color.RED);
                p9.setTextColor(Color.RED);
                p10.setTextColor(Color.RED);
                p11.setTextColor(Color.RED);
                p12.setTextColor(Color.RED);
                p13.setTextColor(Color.RED);
                p14.setTextColor(Color.RED);
                p15.setTextColor(Color.RED);
            }
        }

3 个答案:

答案 0 :(得分:0)

试试这个:

 numspace1.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
        if(!s.toString().equals("")) {
           checkValue(s.toString());
        }

        }
    });


}

private void checkValue(String s) {
    Double numb1 = Double.parseDouble(s);
    if (numb1 >= 6517253 && numb1 <= 10692628) {
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 5346332 && numb1 <= 6517252) {
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 3972294 && numb1 <= 5346331) {
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 3258594 && numb1 <= 3972293) {
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 2421087 && numb1 <= 3258593) {
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 1475581 && numb1 <= 2421086) {
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 273742 && numb1 <= 1475580) {
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 123660 && numb1 <= 273741) {
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 83014 && numb1 <= 123659) {
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 22406 && numb1 <= 83013) {
        p5.setTextColor(Color.RED);
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 13363 && numb1 <= 22405) {
        p4.setTextColor(Color.RED);
        p5.setTextColor(Color.RED);
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    } else if (numb1 >= 0 && numb1 <= 13362) {
        p2.setTextColor(Color.RED);
        p3.setTextColor(Color.RED);
        p4.setTextColor(Color.RED);
        p5.setTextColor(Color.RED);
        p6.setTextColor(Color.RED);
        p7.setTextColor(Color.RED);
        p8.setTextColor(Color.RED);
        p9.setTextColor(Color.RED);
        p10.setTextColor(Color.RED);
        p11.setTextColor(Color.RED);
        p12.setTextColor(Color.RED);
        p13.setTextColor(Color.RED);
        p14.setTextColor(Color.RED);
        p15.setTextColor(Color.RED);
    }
}

答案 1 :(得分:0)

新答案: 嗯..在你输入的每个角色中触发afterTextChanged ...如果你把1000 - &gt;它将调用4次.. 1 10 100 1000

我的建议是: 选项1:在afterTextChanged

的开头设置默认颜色

选项2:当用户完成输入时触发颜色设置(保留编辑文本或在键盘上按完)...查看此链接了解详细信息:android EditText - finished typing event

旧答案: 可编辑正在实现CharSequence,这意味着您可以使用char序列中的toString方法:

  

“返回包含此序列中字符的字符串   与此序列相同的顺序。“

试试这个:

numspace1.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {
        Double numb1 = Double.parseDouble(s.toString());
        if (numb1 >= 6517253 && numb1 <= 10692628) {
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 5346332 && numb1 <= 6517252) {
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3972294 && numb1 <= 5346331) {
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3258594 && numb1 <= 3972293) {
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 2421087 && numb1 <= 3258593) {
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 1475581 && numb1 <= 2421086) {
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 273742 && numb1 <= 1475580) {
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 123660 && numb1 <= 273741) {
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 83014 && numb1 <= 123659) {
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 22406 && numb1 <= 83013) {
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 13363 && numb1 <= 22405) {
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 0 && numb1 <= 13362) {
            p2.setTextColor(Color.RED);
            p3.setTextColor(Color.RED);
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        }
    }

答案 2 :(得分:0)

You can try the following :   

  private void checkValue(String s) {
        Double numb1 = Double.parseDouble(s);
        if (numb1 >= 6517253 && numb1 <= 10692628) {
            p15.setTextColor(Color.RED);
 // set other text color black (apply it for all other textviews .)
 p2.setTextColor(Color.RED);
            p3.setTextColor(Color.BLACK);
            p4.setTextColor(Color.BLACK);
            p5.setTextColor(Color.BLACK);
            p6.setTextColor(Color.BLACK);
            p7.setTextColor(Color.BLACK);
            p9.setTextColor(Color.BLACK);
            p10.setTextColor(Color.BLACK);
            p11.setTextColor(Color.BLACK);
            p12.setTextColor(Color.BLACK);
            p13.setTextColor(Color.BLACK);
            p14.setTextColor(Color.BLACK);


        } else if (numb1 >= 5346332 && numb1 <= 6517252) {
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3972294 && numb1 <= 5346331) {
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 3258594 && numb1 <= 3972293) {
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 2421087 && numb1 <= 3258593) {
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 1475581 && numb1 <= 2421086) {
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 273742 && numb1 <= 1475580) {
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 123660 && numb1 <= 273741) {
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 83014 && numb1 <= 123659) {
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 22406 && numb1 <= 83013) {
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 13363 && numb1 <= 22405) {
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        } else if (numb1 >= 0 && numb1 <= 13362) {
            p2.setTextColor(Color.RED);
            p3.setTextColor(Color.RED);
            p4.setTextColor(Color.RED);
            p5.setTextColor(Color.RED);
            p6.setTextColor(Color.RED);
            p7.setTextColor(Color.RED);
            p8.setTextColor(Color.RED);
            p9.setTextColor(Color.RED);
            p10.setTextColor(Color.RED);
            p11.setTextColor(Color.RED);
            p12.setTextColor(Color.RED);
            p13.setTextColor(Color.RED);
            p14.setTextColor(Color.RED);
            p15.setTextColor(Color.RED);
        }
    }

由于您不熟悉Android,我建议您为此学习ListView