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

레이아웃 분할에 대해서..

0 추천

안녕하세요.

상단에 항목1~5[갯수는 변동될 수있음] 버튼이 있구요, 

해당 항목 버튼을 누르면 그 항목에 맞는 레이아웃들을 (항목1.xml,항목2.xml..) 아래에 나타내려고 합니다.

이런 경우엔 어떤 방식으로 구현해야 하는지요..(__)

anci (19,950 포인트) 님이 2014년 3월 18일 질문

2개의 답변

+2 추천
저는 프라그먼트가 생각나네요

http://developer.android.com/guide/components/fragments.html
q1212 (26,020 포인트) 님이 2014년 3월 18일 답변
안녕하세요. 답글이 늦었네요 ;_;) 댓글 감사합니다^^
프래그먼트라는 기능도 있군요..참고해보겠습니다.
+1 추천
주먹밥님 안녕하세요~

제 생각에는 커스텀 레이아웃을 사용하셔야 할 것 같네요.

 

#1

본문에 그리신대로 메인레이아웃에 위젯(버튼과 설명을 표시할)을 세팅하신후,

 

#2

Linear layout;

layout = (LinearLayout) findViewById (R.id.layout);

위와 같이 메인에 있는 레이아웃을 캐치하세요.

 

#3

그리고 버튼을 클릭했을 때,

Button bt1 = (Button)findViewById(R.id.button1);
  bt1.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    layout.removeAllViews();                 // 현재 표시된 뷰를 모두 지워주고
    layout.addView (lin1);                      // 커스텀 레이아웃을 add 하여 표시.
   }
  });

 

Button bt2 = (Button)findViewById(R.id.button2);
  bt2.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    layout.removeAllViews();
    layout.addView (lin2);
   }
   
  });

 

#4

#3에서 사용한 layout.addView (클래스); 의 내용은 다음과 같구요

public class Lin01 extends LinearLayout {

  TextView tv1;
  TextView tv2;

 public Lin01 (Context context, AttributeSet attrs) {
  super(context, attrs);
  onFinishInflate();
 }

 @Override
 protected void onFinishInflate() {
  super.onFinishInflate();
  ((Activity) getContext()).getLayoutInflater().inflate(R.layout.test1, this);     // 할당할 xml 레이아웃
  setupViewItems();
 }

 private void setupViewItems() {                                      // 할당할 xml 에 붙은 위젯
  tv1 = (TextView) findViewById(R.id.textView1);
  tv2 = (TextView) findViewById(R.id.textView2);
 }
 
}

 

#5

아래와 같이 lin1 과 lin2 를 사용하기전에 생성해주면 끗.

lin1 = new Lin01(this, null);
lin2 = new Lin02(this, null);
초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 18일 답변
안녕하세요 ^^ 늘 답변 주셔서 감사합니다.
초보개발자님 덕분에 문제 해결한게 한둘이 아닌듯해요 ㅋㅋ.
일단 프래그먼트랑...레이아웃 분할에 대해 공부해보고 , 초보개발자님 답변도 참고하겠습니다!감사합니다.
화이팅하시고 좋은 하루 보내세요 ^^
...