我制作了自定义视图,似乎无法从那里访问我自定义的颜色。我的整个应用程序由以下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天左右的情况,不用说我已经尝试了很多不起作用的东西。如果有人能帮我解决这个问题,我将非常感激。
谢谢!
答案 0 :(得分:0)
我只想出了这个。问题是我在构造函数中设置viewWidth
和viewHeight
。当我直接在getWidth()
中调用getHeight()
和onDraw(Canvas canvas)
时,它就可以了。我猜这些值直到onDraw
方法才设置,或者至少在构造函数之后才设置。
感谢Hoan Nguyen的帮忙!
答案 1 :(得分:0)
试试这个:
background.setColor(ContextCompat.getColor(context,R.color.black));