2011-10-15 2 views
0

내 애플리케이션에 스피너와 LinearLayout이 있습니다. 회 전자의 항목이 변경되면 LinearLayout은 다른 레이아웃 (LinearLayout 인 다른 xml 파일)을 포함하게됩니다. View.inflate 메서드를 사용해 보았지만 레이아웃이 처음부터 변경되지 않았습니다. 이 문제를 해결하려면 어떻게해야합니까?하나의 LinearLayout에서 여러 레이아웃을 동적으로 전환합니다.

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parentView, 
       View selectedItemView, int position, long id) { 
      changeForm(id); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      ; 
     } 
    }); 

} 

private void changeForm(long id) { 
    LinearLayout formLayout=(LinearLayout)findViewById(R.id.type_layout); 
    if(id==0){View.inflate(this, R.layout.text, formLayout);} 
    else if(id==3){View.inflate(this, R.layout.phonecall, formLayout);}  
} 

답변

1

은 또한 다음 단지 그들에 가시성을 변경하는 FrameLayout에은 LinearLayouts을 모두 넣을 수 있습니다.

0

이 문제를 처리하는 또 다른 방법은 android ViewFlipper를 사용하는 것입니다. 그 아래에 여러 개의 자식을 추가 할 수 있습니다. viewflipper는 한 번에 한 줄씩 만 표시합니다.

viewflipper.setDisplayedChild(1); 

뷰를 전환하는 동안 애니메이션을 넣을 수 있습니다.

이들에 대한 자습서는 그것을

Tutorial 1, Tutorial 2

관련 문제