How to draw a line in android between two or more RadioButtons

I want to draw a line between two or more views like radioButtons when one of them is checked?

0


source to share


2 answers


I think below codes may give some drawing ideas

enter image description here

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
import android.widget.RelativeLayout;

public class MainActivity extends Activity {

      DrawView drawView;
      RadioButton r1,r2,r3,r4;    
      RelativeLayout rl1;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            r1 =(RadioButton)findViewById(R.id.radioButton1);
            r2 =(RadioButton)findViewById(R.id.radioButton2);
            r3 =(RadioButton)findViewById(R.id.radioButton3);
            r4 =(RadioButton)findViewById(R.id.radioButton4);

            rl1 =(RelativeLayout)findViewById(R.id.rl1);

            r1.setOnCheckedChangeListener(new OnCheckedChangeListener() {               
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    r2.setChecked(false);
                    r3.setChecked(false);
                    r4.setChecked(false);
                    drawView = new DrawView(MainActivity.this,r4,r1);
                    drawView.setBackgroundColor(Color.WHITE);
                    rl1.addView(drawView);                  
                }
            });

            r2.setOnCheckedChangeListener(new OnCheckedChangeListener() {               
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    r1.setChecked(false);
                    r3.setChecked(false);
                    r4.setChecked(false);
                    drawView = new DrawView(MainActivity.this,r1,r2);
                    drawView.setBackgroundColor(Color.WHITE);
                    rl1.addView(drawView);
                }
            });

            r3.setOnCheckedChangeListener(new OnCheckedChangeListener() {               
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    r2.setChecked(false);
                    r1.setChecked(false);
                    r4.setChecked(false);
                    drawView = new DrawView(MainActivity.this,r2,r3);
                    drawView.setBackgroundColor(Color.WHITE);
                    rl1.addView(drawView);
                }
            });

            r4.setOnCheckedChangeListener(new OnCheckedChangeListener() {               
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {    
                    r2.setChecked(false);
                    r3.setChecked(false);
                    r1.setChecked(false);
                    drawView = new DrawView(MainActivity.this,r3,r4);
                    drawView.setBackgroundColor(Color.WHITE);
                    rl1.addView(drawView);
                }
            });

        }

}

      

DrawView



import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class DrawView extends View {
    Paint paint = new Paint();
    View startView;
    View endView;    

    public DrawView(Context context,View startView,View endView) {
        super(context);
        paint.setColor(Color.YELLOW);        
        this.startView = startView;
        this.endView = endView;
    }

    @SuppressLint("NewApi")
    public void onDraw(Canvas canvas) {
            canvas.drawLine(startView.getX()+25, startView.getY()+50, endView.getX()+25, endView.getY(), paint);
    }

}

      

activity_main.xml  

    <RelativeLayout
        android:id="@+id/rl1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#ffffaa" >

    </RelativeLayout>

    <RadioButton
        android:id="@+id/radioButton4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:text="RadioButton" />

    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioButton4"
        android:layout_alignParentTop="true"
        android:layout_marginTop="84dp"
        android:text="RadioButton" />

    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/radioButton4"
        android:layout_marginRight="78dp"
        android:layout_marginTop="32dp"
        android:text="RadioButton" />

    <RadioButton
        android:id="@+id/radioButton3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/radioButton4"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="23dp"
        android:text="RadioButton" />

</RelativeLayout>

      

+5


source


I think you can create two instances of the radio button in your class and then use a canvas to draw in between. I think you can get the coordinates of each one.



0


source







All Articles