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

인플레이터에 Activity상속 class를 넣는 방법

0 추천

인플레이터를 사용해서 메인 엑티비티 안의 레이아웃에 엑티비티를 삽입 하고 싶습니다.

 

XML로 정의된 엑티비티를 삽입 하고 싶다면 다음과 같이 사용 할 수 있습니다. 

         LinearLayout lineout=(LinearLayout)findViewById(R.id.layout1);
        LayoutInflater infl = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        infl.inflate(R.layout.game_view,lineout,true);

 

그런데, 저는 커스텀 뷰를 만들어서 지정된 레이아웃속에 인플레이터를 사용해서 넣고 싶은데,

 (게임을 구현 하고 있는데, 게임 영역만 커스텀 뷰로 구현을 하고 나머지는 XML에서 정의된 것을 사용 하고 싶습니다.)

 

커스텀 뷰를 만들면 리소스 없이 엑티비티 상속 class하나만 나오잔아요..


public class CGameView extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.game_view);
        //CustomView myView = new CustomView(this);
        //setContendView();
        this.setContentView(new ChildView(this));
    }

 protected class ChildView extends View{

  public ChildView(Context context) {
   super(context);
   // TODO Auto-generated constructor stub
  }
     
  public void onDraw(Canvas canvas)
  {
   canvas.drawColor(Color.LTGRAY);
   Paint pnt=new Paint();
   pnt.setColor(Color.GREEN);
   canvas.drawCircle(100, 100, 80, pnt);
  }
     
     
    }
}

그럴 경우에는 어떻게 이 class를 가지고 엑티비티를 부모 엑티비티의 레이아웃 속에 끼워넣을수 있을까요?

익명사용자 님이 2013년 3월 25일 질문

1개의 답변

+1 추천
커스텀뷰도 api에서 제공하는 컴포넌트들과 마찬가지로 캐스팅하셔서 사용하시면 됩니다.

우선 인플레이터로 View를 생성합니다
LayoutInflater inf = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout view = (LinearLayout)inf.inflate(R.layout.test, null);

인플레이터로 생성한 View를 추가하고 싶은 레이아웃에
[layoutname].addView(View) 로 삽입 할 수 있습니다.

다시 지우고 싶으실 경우에는
[layoutname].removeAllViewsInLayout(); 하시면 내부에 있는 뷰들을 제거 할 수 있습니다.
Noizbuster (11,970 포인트) 님이 2013년 3월 26일 답변
Noizbuster님이 2013년 3월 26일 수정
...