안드로이드 개발 질문/답변
(글 수 45,052)
EditText와 Button을 화면에 넣고 그 아래에 DrawLine을 이용해서 도형을 그리려고 합니다.
헌데
EditText 와 Button을 넣은 화면도 잘 되고
DrawLine을 이용해서 도형그리는것도 잘 되는데
두가지를 한 화면에 넣으려면 예상치 않은 오류가 났다고 강제종료 팝업이 뜨더군요.
Widget(EditText 또는 Button)과 2D를 조합된 화면을 생성하려면 어떻게 해야하나요?
자세한 설명 부탁드립니다.
public class sadariAct extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setContentView(new SadariView(this)); Button button = (Button)findViewById(R.id.button); button.setOnClickListener(mCorkyListener); } private OnClickListener mCorkyListener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub EditText editText = (EditText)findViewById(R.id.editText); editText.setText("Change"); } }; }
public class SadariView extends View{ public SadariView(Context context){ super(context); } @Override public void onDraw(Canvas canvas){ //Canvas 배경 설정 canvas.drawColor(Color.WHITE); //Bitmap을 Canvas에 뿌리기 Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon); canvas.drawBitmap(bm, 200, 200, null); //드로잉을 위한 Paint 객체 생성 Paint myPaint = new Paint(); myPaint.setAntiAlias(true);//AntiAliasing 설정 //선 그리기 myPaint.setColor(Color.BLUE); //선 색상 설정 canvas.drawLine(150, 150, 200, 200, myPaint); } }
ps. 감기조심하세요 코감기때문에 죽겠네요 :(
setContentView(
new
SadariView(this));
이부분이 잘못 되었습니다.
main 레이아웃에 SadariView를 포함 시켜서 작업하시는 것이 올바른 방법입니다.
main이 setContentView를 통해 세팅 되어있다가 다시 SadariView가 ContentView의 하위 레이아웃으로
세팅 되기 때문입니다. 한마디로 main은 사라지는 것이죠.
그러니 Find 명령은 실패하구요. 에러가 발생하죠.
CustomView는 API 데모에서 CustomView,LabelView 부분을 참고하시기 바랍니다.