I need to draw three circles in my fragment ,the circles differ in size, I refer this link The result i obtained is this

This is my XML Code : UPDATED
<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" >
         <TextView
             android:id="@+id/large_volume"
             android:layout_width="185dp"
             android:layout_height="185dp"
             android:background="@drawable/circle"
             android:gravity="center"
             android:text="My name is NON"
             android:textColor="#FFFFFF"
             android:textSize="10dp" />
         <TextView
             android:id="@+id/medium_volume"
             android:layout_width="120dp"
             android:layout_height="120dp"
             android:layout_alignTop="@+id/large_volume"
             android:layout_toRightOf="@+id/large_volume"
             android:background="@drawable/circle"
             android:gravity="center"
             android:text="My name is NON"
             android:textColor="#FFFFFF"
             android:textSize="10dp" />
         <TextView
             android:id="@+id/TextView02"
             android:layout_width="90dp"
             android:layout_height="90dp"
             android:layout_below="@+id/medium_volume"
             android:layout_toRightOf="@+id/large_volume"
             android:background="@drawable/circle"
             android:gravity="center"
             android:layout_marginTop="-3dp"
             android:layout_marginLeft="-17dp"
             android:text="My name is NON"
             android:textColor="#FFFFFF"
             android:textSize="10dp" />
    </RelativeLayout>
But what i need must be is like this 
You can see the circles must stay close together , But when i use XML view i can't achieve this . How can i achieve this , I need onClickListeners in my circle thats why i use views 
Is this can achieve through Canvas drawing , i heard canvas is not view so this will restrict me from giving click listeners ,Correct me if i am wrong
UPDATE :
I fulfill my need through XML approach ,is there any way to achieve this through canvas drawing ,Should i post another question for that ??
Try this
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
            <TextView
                android:id="@+id/num_txt"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_marginTop="0dp"
                android:background="@drawable/bg_red"
                android:gravity="center"
                android:text="My name is NON"
                android:textColor="#FFFFFF"
                android:textSize="10dp" />
        </RelativeLayout>
    </RelativeLayout>
Save in drawable bg_red.xml
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
        android:shape="oval">
        <corners android:radius="10dip"/>
        <stroke android:color="#FF0000" android:width="5dip"/>
        <solid android:color="#FF0000"/>
    </shape>
Edited Code
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >
         <TextView
             android:id="@+id/num_txt"
             android:layout_width="185dp"
             android:layout_height="185dp"
             android:layout_alignParentTop="true"
             android:layout_marginTop="163dp"
             android:background="@drawable/bg_red"
             android:gravity="center"
             android:text="My name is NON"
             android:textColor="#FFFFFF"
             android:layout_marginLeft="10dp"
             android:textSize="10dp" />
         <TextView
             android:id="@+id/TextView02"
             android:layout_width="90dp"
             android:layout_height="90dp"
             android:layout_alignParentRight="true"
             android:layout_alignTop="@+id/TextView01"
             android:layout_marginRight="90dp"
             android:layout_marginTop="122dp"
             android:background="@drawable/bg_red"
             android:gravity="center"
             android:text="My name is NON"
             android:textColor="#FFFFFF"
             android:textSize="10dp" />
         <TextView
             android:id="@+id/TextView01"
             android:layout_width="120dp"
             android:layout_height="120dp"
             android:layout_alignTop="@+id/num_txt"
             android:layout_toRightOf="@+id/num_txt"
             android:background="@drawable/bg_red"
             android:gravity="center"
             android:text="My name is NON"
             android:textColor="#FFFFFF"
             android:textSize="10dp" />
    </RelativeLayout>
ConstraintLayout use for badge count.

    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:gravity="center">
        <ImageView
            android:id="@+id/tab_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:background="@android:color/transparent"
            android:scaleType="centerInside"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/ic_home"
            tools:layout_constraintBottom_creator="1"
            tools:layout_constraintLeft_creator="1"
            tools:layout_constraintRight_creator="1"
            tools:layout_constraintTop_creator="1" />
        <TextView
            android:id="@+id/tab_badge"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:background="@drawable/icon_badge"
            android:paddingBottom="1dp"
            android:paddingLeft="6dp"
            android:paddingRight="6dp"
            android:paddingTop="1dp"
            android:text="10"
            android:textAppearance="@style/TextAppearance.AppCompat.Small"
            android:textColor="@android:color/white"
            android:textSize="12dp"
            app:layout_constraintBottom_toBottomOf="@+id/tab_icon"
            tools:layout_constraintLeft_creator="1"
            android:layout_marginLeft="14dp"
            app:layout_constraintLeft_toLeftOf="@+id/tab_icon" />
    </android.support.constraint.ConstraintLayout>
                        Try this
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;
public class CircularTextView extends TextView
{
private float strokeWidth;
int strokeColor,solidColor;
public CircularTextView(Context context) {
    super(context);
}
public CircularTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
}
public CircularTextView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}
@Override
public void draw(Canvas canvas) {
    Paint circlePaint = new Paint();
    circlePaint.setColor(solidColor);
    circlePaint.setFlags(Paint.ANTI_ALIAS_FLAG);
    Paint strokePaint = new Paint();
    strokePaint.setColor(strokeColor);
    strokePaint.setFlags(Paint.ANTI_ALIAS_FLAG);
    int  h = this.getHeight();
    int  w = this.getWidth();
    int diameter = ((h > w) ? h : w);
    int radius = diameter/2;
    this.setHeight(diameter);
    this.setWidth(diameter);
    canvas.drawCircle(diameter / 2 , diameter / 2, radius, strokePaint);
    canvas.drawCircle(diameter / 2, diameter / 2, radius-strokeWidth, circlePaint);
    super.draw(canvas);
}
public void setStrokeWidth(int dp)
{
    float scale = getContext().getResources().getDisplayMetrics().density;
    strokeWidth = dp*scale;
}
public void setStrokeColor(String color)
{
    strokeColor = Color.parseColor(color);
}
public void setSolidColor(String color)
{
    solidColor = Color.parseColor(color);
}
}
https://stackoverflow.com/a/34685568/2809351
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With