如何获取当前颜色并将名称显示为EditText

时间:2018-04-28 11:45:15

标签: android colors android-custom-view

我的应用程序将字符打印到自定义视图,我可以使用以下内容设置打印字符的颜色:

public void setColor(){

    curColor++;
    int NUMBEROFCOLORS = 5;
    curColor = curColor % (NUMBEROFCOLORS -1);
    switch(curColor){
        case 0:
            paintTxt.setColor(Color.GREEN);
            break;
        case 1:
            paintTxt.setColor(Color.BLUE);
            break;
        case 2:
            paintTxt.setColor(Color.RED);
            break;
        case 3:
            paintTxt.setColor(Color.YELLOW);
            break;
        case 4:
            paintTxt.setColor(Color.MAGENTA);
            break;
        case 5:
            paintTxt.setColor(Color.WHITE);
            break;

    }


}

然后在按钮的onClick方法上使用它:

colorChanger.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myCustomView.setColor(); //this changes the color of chars that are being printed to the custom view
       //  myEditText.setText(myCustomView.getColor()); // This doesnt do anything
                }
            }
    );
}

波纹管工作正常,但我也会在EditText中打印当前颜色。说白色设置时,打印类似"当前颜色:白色"等等。 我可以使用类似的东西:

myEditText.setText(myCustomView.getColor());

它不起作用。我知道我没有做他们应该做的事情,仍然是初学者。

创建一个调用上面代码的getter,崩溃app:

public int getColor() {
    return curColor;
}

日志:

  

E / AndroidRuntime:致命异常:主要       过程:com.esqmo.apps.digitalraineffects,PID:11373       android.content.res.Resources $ NotFoundException:字符串资源ID#0x1

请建议我了解如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

从错误中看,setText似乎是String,但getColor返回int

因此您必须将代码更改为

myEditText.setText(myCustomView.getColor()+"");

或者

myEditText.setText(Integer.toString(myCustomView.getColor()));

int

中打印颜色名称而不是editText
String colorName = color(myCustomView.getColor());
myEditText.setText(colorName);


public String color(int colorNum)
{
     String color;
     switch(colorNum) {
        case 0:
            color = Color.GREEN;
            ......
            break;
        case 1:
             .....
            break;
    }
    return color;
}