마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안녕하십니까 고수님들 캔버스안에 버튼과 텍스트 뷰를 넣고 싶습니다.

0 추천

안녕하세요 고수님들..ㅠㅠ 안드로이드에 초보입니다. 캔버스랑 버튼을 응용해서 임의로 피시방 좌석 현황을 그리고 버튼을 누르면 '빈자리'라고 써져있는 개수 만큼 나오게 하려고 합니다. 그런데 캔버스에 버튼을 생성해야되는데 레이아웃을 이용해도 버튼이 화면에 나오질 않습니다.

캔버스에 버튼을 띄우는걸 도움을 구할수 있을까요??

MainActivity.java

package com.example.user.a1;
(import문 생략)
public class MainActivity extends AppCompatActivity {
Button btn1;
String num1;
Integer result;
TextView textResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new pc(this));
setTitle("컴정과 703호 피시방 자리현황");
빈자리를 세서 밑에 버튼을 누르면 빈자리 개수가 뜨는 코드 작성중
캔버스가 레이아웃을 다 덮는지 버튼이 생성이 안됨
btn1 = (Button) findViewById(R.id.btn1);
textResult = (TextView) findViewById(R.id.textResult);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
result = Integer.parseInt("빈자리");
textResult.setText(result.toString() + "개");
}
});
}
private static class pc extends View {
public pc(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(10);
paint.setStyle(Paint.Style.STROKE);
Rect rect0 = new Rect(10,10,1054,1474);
canvas.drawRect(rect0, paint);
paint.setColor(Color.RED);
paint.setStrokeWidth(0);
paint.setStyle(Paint.Style.FILL);
Rect rect1 = new Rect(14, 14, 214, 214);
canvas.drawRect(rect1, paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
Rect rect2 = new Rect(14, 224, 214, 424);
canvas.drawRect(rect2, paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
Rect rect3 = new Rect(14, 434, 214, 634);
canvas.drawRect(rect3, paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
Rect rect4 = new Rect(14, 644, 214, 844);
canvas.drawRect(rect4, paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
Rect rect5 = new Rect(14, 854, 214, 1054);
canvas.drawRect(rect5, paint);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.BLUE);
(밑의 코드는 자리생성을 노가다로 좌표를 일일이 찍어서 생성하는 코드라 생략하겠습니다.)
        }
    }
}
activity_main.xml

자리현황 xml코드

실행화면

긴코드 읽어주셔서 감사합니다ㅜㅜ
dfg1564 (120 포인트) 님이 2018년 5월 31일 질문

1개의 답변

0 추천
setContentView(new pc(this)); 를

setContentView(R.layout.activity_main); 으로

바꿔야겠네요.
디자이너정 (42,810 포인트) 님이 2018년 5월 31일 답변
바꿔봤는데 앱이 중지되었다고 뜹니다...ㅜㅜ
AndroidManifests에 해당 Activity가 추가되었는지 확인해보세요
Manifests에는 이미 원래 Activity가 추가 되어있습니다. 그리고 더 추가로 만든 Activity는 없습니다..ㅜㅜ
...