4

I try to make drawing page with canvas and add floating button in corner for some actions. But it is not appearing. This is my classes

DrawView.java

public class DrawView extends View implements View.OnTouchListener {
private List<Point> points = new ArrayList<>();
private Paint paint = new Paint();

public DrawView(Context c) {
    super(c);
    setFocusable(true);
    setFocusableInTouchMode(true);
    this.setOnTouchListener(this);
    paint.setColor(Color.BLACK);
}

@Override
public void onDraw(Canvas canvas) {
    for (Point point : points) {
        canvas.drawCircle(point.x, point.y, 30, paint);
    }
}

public boolean onTouch(View view, MotionEvent event) {
    Point point = new Point();
    point.x = event.getX();
    point.y = event.getY();
    points.add(point);
    invalidate();
    return true;
}}

And Main activity

public class DrawingPage extends AppCompatActivity {
private DrawView drawView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_drawing_page);
    drawView = new DrawView(getApplicationContext());
    drawView.setBackgroundColor(Color.WHITE);
    setContentView(drawView);
    drawView.requestFocus();
}}

XML

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="reminder.com.picsartdrawing.DrawingPage">

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/myFAB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        app:elevation="4dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

But floating button is not appearing, any solutions? Screenshot

EDIT!!! in Activity's onCreate method I have changed this, and now I have drawing canvas page with button.

RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout);
        drawView = new DrawView(getApplicationContext());
        drawView.setBackgroundColor(Color.WHITE);
        drawView.requestFocus();
        assert layout != null;
        layout.addView(drawView);

2 Answers2

4

In onCreate() you replace 2 times with setContentView() the "main" view, so try with only this:

setContentView(R.layout.activity_drawing_page);
Michele Lacorte
  • 5,323
  • 7
  • 32
  • 54
1

You need to add this in the onCreate method of your activity class:

FloatingActionButton fab = (FloatingActionButton) findViewById (R.id.fab);
        fab.setOnClickListener (new View.OnClickListener () {
            @Override
            public void onClick (View view) {
                Snackbar.make (view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction ("Action", null).show ();
            }
        });
Berat Cevik
  • 1,818
  • 3
  • 22
  • 28