Butterknife @BindColor:如何将参数传递给方法并设置TextView Color?

时间:2019-03-10 02:18:45

标签: java android colors textview butterknife

我做错什么了吗?我需要将整数变量传递给交换机。

这有效(带有数字):

@BindColor(R.color.white) protected int white;
@BindColor(R.color.black) protected int black;

将int值作为数字传递

setTextColor(1);

然后,在开关处处理:

private void setTextColor(int color){
        switch (color){
            case 1 : {
                textViewUserName.setTextColor(black);
                textViewCardNumber.setTextColor(black);
                break;
            }
            case 2 : {
                textViewUserName.setTextColor(white);
                textViewCardNumber.setTextColor(white);
                break;
            }
        }
    }

但是,当我传递int whiteblack值时,该开关不起作用。为什么?

setTextColor(white);

现在切换ID

private void setTextColor(int color){
        switch (color){
            case R.color.black : {
                textViewUserName.setTextColor(black);
                textViewCardNumber.setTextColor(black);
                break;
            }
            case R.color.white: {
                textViewUserName.setTextColor(white);
                textViewCardNumber.setTextColor(white);
                break;
            }
        }
    }

什么也没有发生,textView颜色没有变化。

1 个答案:

答案 0 :(得分:0)

我通过停止使用黄油刀并创建一个类来获得所需的颜色来解决了我的问题

public static int getColor(Context context, int color) {
    switch (color){
        case 1 : {
            return (context.getResources().getColor(R.color.yellow));
        }
        case 2 : {
            return (context.getResources().getColor(R.color.purple));
        }
        case 3 : {
            return (context.getResources().getColor(R.color.green));
        }
        case 4 : {
            return (context.getResources().getColor(R.color.grey));
        }
        case 5 : {
            return (context.getResources().getColor(R.color.red));
        }
        default : {
            return 0;
        }
    }
}

最后,我只需要像这样设置颜色:

imageView.setColorFilter( ClassHelperCreated.getColor(this, color) );