我正在通过扩展ConstraintsLayout以及以下子项来开发自定义视图类(DatePicker):
我想在视图上绘制一个矩形,以便在DatePicker中显示选中的日期。我在onDraw方法中编写了以下代码:
LinearLayout parentContainer = findViewById(R.id.id_container_lists);
Paint paint = new Paint();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
paint.setColor(getResources().getColor(R.color.colorSelectedDate, getContext().getTheme()));
} else {
paint.setColor(getResources().getColor(R.color.colorSelectedDate));
}
paint.setAlpha(100);
Rect rect = new Rect(0, (parentContainer.getBottom() - parentContainer.getTop())/2 - 40, parentContainer.getRight(), (parentContainer.getBottom() - parentContainer.getTop())/2 + 100);
canvas.drawRect(rect, paint);
super.onDraw(canvas);
但视图上没有显示任何内容。我尝试了调试,onDraw中的代码正在执行,但执行后我的自定义视图中没有任何内容。
然后我尝试重写onDrawForeground方法并在此方法中复制完全相同的代码并且它有效。 我的应用程序现在正在运行,但我只是想知道为什么它在onDraw函数中不起作用?我可以做些什么来使它在onDraw方法中工作?
答案 0 :(得分:0)
onDraw
之前调用 drawChild
,这意味着所有子项都是在矩形之后绘制的,在这种情况下,它是您的背景。
但这样做似乎有点过于复杂,为什么不在ConstrantsLayout中放置一个可以绘制正方形的视图呢?