【发布时间】:2017-10-14 15:10:03
【问题描述】:
我正在通过扩展 ConstraintsLayout 以及以下子级来开发自定义视图类 (DatePicker):
- 3 RecyclerViews
- 2 个按钮
我想在视图上绘制一个矩形,以便在 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 方法中工作?
【问题讨论】:
标签: android view ondraw android-constraintlayout custom-view