setColorFilter()

时间:2016-02-13 18:05:28

标签: android android-activity

我注意到setColorFilter()的一个奇怪的行为。我的活动中有一些按钮,当用户点击其中一个按钮时,如果某个条件为真,我想为它设置绿色背景,否则为红色。这不起作用。但是在另一种方法中,如果没有任何条件,则相同的语句有效。 我只在ICS上遇到这个问题,而在Lollipop上一切运作良好。我通过使用drawable来设置背景来解决这个问题,但我想了解为什么会出现这个问题。 第一种方法:

 private void setButtons() {

    buttonList = new ArrayList<>();

    /*buttons initialization*/

    for (int i = 0; i < btnNumber; i++) {

        buttonList.get(i).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Button btn = (Button) v;
                String buttonText = btn.getText().toString();

                if (buttonText.equals(getAnswer())) {
                //set background to GREEN
                btn.getBackground().setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.GREEN), PorterDuff.Mode.MULTIPLY);

                } 
                else {
                //set background to RED
                btn.getBackground().setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.RED), PorterDuff.Mode.MULTIPLY);
                }
            }
        });
    }

}

同一类中的第二种方法:

 private void revealAnswer() {
    String answer = getAnswer();
    for (int i = 0; i < btnNumber; i++) {
        Button currentBtn = buttonList.get(i);
        String currentText = (String) currentBtn.getText();
        if (currentText.equals(answer)) {
            //set background to GREEN
            buttonList.get(i).getBackground().setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.GREEN), PorterDuff.Mode.MULTIPLY);
            break;
        }
    }
}

0 个答案:

没有答案