Android 는 addView 동적 으로 구성 요 소 를 추가 하 는 방법 을 사용 합 니 다.

프로젝트 개발 에서 우 리 는 항상 동적 으로 구성 요 소 를 추가 해 야 합 니 다.그 중에서 추가 할 수 있 는 부분 은 두 가지 가 있 습 니 다.레이아웃 과 구성 요소 입 니 다. 
그 중에서 추 가 된 레이아웃 은 주로 Relative Layout 형(상대 레이아웃)과 LinearLayout(선형 레이아웃)이 있 습 니 다.
추 가 된 구성 요 소 는 주로 텍스트 디 스 플레이 상자,편집 상자,단추 등 구성 요소 가 있 습 니 다. 
다음은 우리 가 실현 할 것 이다.
우선,MainActivity.class 에 없 는 코드 를 삭제 하고 proctected void onCreate(Bundle saved InstanceState)함수 만 남아 서 레이아웃 파일 에 새 구성 요 소 를 추가 합 니 다.
1.addView 방법 소개 
Android 에서 addView(ViewGroup view,index)는 지정 한 index 에 view 를 추가 합 니 다.레이아웃 View 의 addView 함 수 를 이용 하여 동적 으로 생 성 된 View 아 이 템 을 레이아웃 View 에 추가 할 수 있 습 니 다.
 2.예시:
(1)먼저 레이아웃 파일 에 구성 요 소 를 추가 합 니 다.예 를 들 어 텍스트 하나,단추 두 개 를 추가 합 니 다.이 때 레이아웃 파일 에 레이아웃 항목을 추가 하고 id 를 linearlay 로 정의 해 야 합 니 다.1.구성 요 소 를 추가 할 때 식별 할 수 있 습 니 다.레이아웃 파일 코드 는 다음 과 같 습 니 다.  

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="        " 
  android:id="@+id/textview"/>
 <LinearLayout 
  android:layout_below="@+id/textview"
  android:id="@+id/linearlay_1"
  android:layout_height="wrap_content"
  android:layout_width="wrap_content"
  android:orientation="vertical"
  >

</LinearLayout> 

그리고 우 리 는 Activity 클래스 에 구성 요 소 를 추가 합 니 다.코드 는 다음 과 같 습 니 다. 

   /**
  *    ,     ,              Linerlayout orientation    
  * vertical ,      ,       View      。   View    
  *       ,     (  :Linearlayout RelativeLayout ,  RelativeLayout      )
 
  *  ,  LinearLayout    ,            !         。 
 
  */
 
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 //  activity_main         ,  R.id.lenearlay_1         id
 LinearLayout linear=(LinearLayout) findViewById(R.id.linearlay_1);
 //    ,this      
 TextView tv=new TextView(this);
 tv.setText("     ");
 tv.setId(1);//  ID,    ,    R        ,              
 linear.addView(tv);
 
  //  Button    LinearLayout  
  Button b1 = new Button(this);
  b1.setText("  ");
  linear. addView ( b1 );
 
  //  Button 2    LinearLayout  
  Button b2 = new Button(this);
  b2.setText("  ");
  linear. addView ( b2 );
 
  //  LinearLayout    Button 1
  // linear. removeView ( b1 );

  
 }

} 

효 과 는 다음 그림 과 같다.
 
그림 1 동적 추가 구성 요소-LinearLayout 
 (2)동적 레이아웃 추가: 
*다음 의 예 는 레이아웃 을 동적 으로 추가 하 는 방법 을 소개 합 니 다.기본 내용 은 위의 코드 와 일치 하고 추 가 된 레이아웃 의 위 치 를 어떻게 제어 하 는 지 를 중시 합 니 다.
*레이아웃 의 위 치 를 제어 할 때 LayoutParam 클래스 를 사용 합 니 다.
*메모:위치 와 스타일 을 제어 할 때 레이아웃 과 컨트롤 을 사용 하 는 방법 은 같 습 니 다.
 */이번 에는 MainActivity 에서 만 작업 할 뿐 레이아웃 파일(.xml)과 관련 되 지 않 습 니 다.코드 는 다음 과 같 습 니 다.

 public class MainActivity extends Activity {

 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
  //////////////////////////////////////
  //        relative
 RelativeLayout relative = new RelativeLayout(this);
 relative.setBackgroundColor(Color.YELLOW);
 //  Button1    RelativeLayout  
  Button btn_r1 = new Button(this);
  btn_r1.setText("  ");//       
  btn_r1.setId(24);
  relative.addView(btn_r1);
  
  //  Button2    RelativeLayout  
  Button btn_r2 = new Button(this);
  btn_r2.setText("  ");//         
  btn_r2.setId(25);
  relative.addView(btn_r2); 
  //   RelativeLayout      
   RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
   lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
   lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 
   btn_r1.setLayoutParams(lp); ////          
   lp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
   lp.addRule(RelativeLayout.RIGHT_OF, btn_r1.getId()); 
   btn_r2.setLayoutParams(lp); ////          
   setContentView(relative);
 }

} 

효 과 는 다음 과 같다.
 
그림 2 동적 레이아웃 추가-RelativeLayout
 위의 소 개 를 배우 면 쉽게 레이아웃 인터페이스 를 만 들 수 있 습 니 다.버튼 이 든 다른 구성 요소 든 레이아웃 에 대해 서도 쉽게 레이아웃 을 사용 할 수 있 습 니 다.이상 은 안 드 로 이 드 에서 구성 요 소 를 어떻게 동적 으로 추가 하 는 방법 입 니 다. 
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기