0

1つがチェックされているときに、radioButtonsのような2つ以上のビューの間に線を引きたいですか?

4

2 に答える 2

6

私は以下のコードが描画についてのいくつかのアイデアを与えることができると思います

ここに画像の説明を入力してください

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>
于 2012-12-08T21:26:36.783 に答える
0

クラスでラジオボタンのインスタンスを2つ作成し、キャンバスを使用してそれらの間に描画できると思います。それぞれの座標がわかると思います。

于 2012-12-08T20:27:41.853 に答える