getResources()。getColor无法在自定义视图中工作

时间:2013-06-02 04:07:14

标签: java android colors custom-view getresource

我制作了自定义视图,似乎无法从那里访问我自定义的颜色。我的整个应用程序由以下3个文件组成

位于res / values文件夹中的

colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#000000</color>
</resources>

TestView.java:

public class TestView extends View {

    Paint background;
    int viewWidth;
    int viewHeight;

    public TestView(Context context){
        super(context);
        background = new Paint();
        background.setColor(getResources().getColor(R.color.black));
        //find view dimensions
        viewWidth = getWidth();
        viewHeight = getHeight();
    }

    @Override 
    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);
        canvas.drawRect(0,0,viewWidth,viewHeight, background);      
    }
}

和MainActivity.java:

public class MainActivity extends Activity {

    private static final String TAG = "MainActivity";
    TestView testView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        testView = new TestView(this);
        setContentView(testView);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

我得到的只是一个空白的白色屏幕,它应该是黑色的!我一直试图找出可能导致这种情况持续2天左右的情况,不用说我已经尝试了很多不起作用的东西。如果有人能帮我解决这个问题,我将非常感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

我只想出了这个。问题是我在构造函数中设置viewWidthviewHeight。当我直接在getWidth()中调用getHeight()onDraw(Canvas canvas)时,它就可以了。我猜这些值直到onDraw方法才设置,或者至少在构造函数之后才设置。

感谢Hoan Nguyen的帮忙!

答案 1 :(得分:0)

试试这个:

background.setColor(ContextCompat.getColor(context,R.color.black));