Как нарисовать canvas в fragment?
У меня есть StopwatchFragment, внутри которого я хотел бы нарисовать что-то через canvas (в будущем это будут аналоговые часы, а сейчас хотя бы 2 линии).
public class StopwatchFragment extends Fragment {
TextView stopwatch_label;
RelativeLayout clockView;
public StopwatchFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_stopwatch, container, false);
stopwatch_label = view.findViewById(R.id.stopwatch_label);
clockView = view.findViewById(R.id.ClockView);
clockView.addView(new ClockView(getActivity()));
Stopwatch stopwatch = new Stopwatch(stopwatch_label);
stopwatch.startThread();
stopwatch_label.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopwatch.stopThread();
}
});
return view;
}
private class ClockView extends View {
Paint paint = new Paint();
public ClockView(Context context) {
super(context);
paint.setColor(Color.BLACK);
}
public ClockView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setColor(Color.BLACK);
}
public ClockView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
paint.setColor(Color.BLACK);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawLine(0, 0, 550, 550, paint);
canvas.drawLine(550, 0, 0, 550, paint);
}
}
}
Для этого во fragment_stopwatch.xml я создал RelativeLayout с id=ClockView:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".StopwatchFragment">
<TextView
android:id="@+id/stopwatch_label"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/stopwatchfragment" />
<RelativeLayout
android:id="@+id/ClockView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
И как показано на коде класса StopwatchFragment выше, сразу после создания основного view для фрагмента, я создаю ClockView внутри RelativeLayout, который подтянул в класс через findViewById:
clockView = view.findViewById(R.id.ClockView);
clockView.addView(new ClockView(getActivity()));
Но почему-то метод onDraw() не вызывается. Подскажите, пожалуйста, что с этим можно сделать.