1

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

colors.xml 位于 res/values 文件夹中:

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

测试视图.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 天,不用说我已经尝试了很多没有用的方法。如果有人能帮助我解决这个问题,我将不胜感激。

谢谢!

4

2 回答 2

1

尝试这个:

background.setColor(ContextCompat.getColor(context,R.color.black));
于 2017-04-25T19:22:04.753 回答
0

我只是想通了。问题是我正在设置viewWidthviewHeight在构造函数中。当我刚刚打电话getWidth()getHeight()直接在onDraw(Canvas canvas)其中工作时。我猜这些值在方法之前没有设置onDraw,或者至少在构造函数之后才设置。

感谢 Hoan Nguyen 的帮助!

于 2013-06-02T04:29:29.550 回答