1つがチェックされているときに、radioButtonsのような2つ以上のビューの間に線を引きたいですか?
user1660334
質問する
3500 次
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 に答える