나는 안드로이드 개발에 익숙하지 않고 레이아웃 xml 파일에서 팽창 뷰에 대한 참조를 계속 접하게됩니다. 나는 개발 가이드를 봤고 검색했지만 여전히 그것이 의미하는 바를 이해할 수 없었습니다. 누군가가 매우 간단한 예를 제시 할 수 있다면 대단히 감사하겠습니다.
나는 안드로이드 개발에 익숙하지 않고 레이아웃 xml 파일에서 팽창 뷰에 대한 참조를 계속 접하게됩니다. 나는 개발 가이드를 봤고 검색했지만 여전히 그것이 의미하는 바를 이해할 수 없었습니다. 누군가가 매우 간단한 예를 제시 할 수 있다면 대단히 감사하겠습니다.
답변:
XML 레이아웃을 작성하면 Android OS에 의해 팽창 되어 기본적으로 메모리에 뷰 객체를 생성하여 렌더링됩니다. 암시 적 인플레이션 이라고 부릅 시다 (OS가보기를 팽창시킵니다). 예를 들어 :
class Name extends Activity{
public void onCreate(){
// the OS will inflate the your_layout.xml
// file and use it for this activity
setContentView(R.layout.your_layout);
}
}
를 사용하여 뷰를 명시 적으로 부 풀릴 수도 있습니다 LayoutInflater
. 이 경우 다음을 수행해야합니다.
LayoutInflater
View
예를 들어 :
LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
setContentView(theInflatedView) // 4
findViewById
뷰 를 호출 할 때 객체는 이미 메모리에 있으며 그렇게하는 유일한 이유는 특정 객체에 대한 참조를 얻는 것입니다 (변경하거나 데이터를 가져 오는 것).
뷰를 "팽창화"한다는 것은 레이아웃 XML을 가져와 구문 분석하여 지정된 요소 및 해당 속성에서 뷰 및 뷰 그룹 객체를 생성 한 다음 해당 뷰 및 뷰 그룹의 계층 구조를 상위 뷰 그룹에 추가하는 것을 의미합니다. setContentView ()를 호출하면 XML을 읽은 후 작성된보기를 활동에 첨부합니다. LayoutInflater를 사용하여 다른 ViewGroup에 뷰를 추가 할 수도 있습니다. 이는 많은 상황에서 유용한 도구가 될 수 있습니다.
팽창 은 런타임시 활동에보기 (.xml)를 추가하는 프로세스입니다. listView를 만들 때 각 항목을 동적으로 부풀립니다. 버튼 및 텍스트보기와 같은 여러보기가있는 ViewGroup을 만들려면 다음과 같이 만들 수 있습니다.
Button but = new Button();
but.setText ="button text";
but.background ...
but.leftDrawable.. and so on...
TextView txt = new TextView();
txt.setText ="button text";
txt.background ... and so on...
그런 다음 위의 뷰를 추가 할 수있는 레이아웃을 만들어야합니다.
RelativeLayout rel = new RelativeLayout();
rel.addView(but);
오른쪽 모서리에 버튼을 추가하고 하단에 텍스트보기를 추가하려면 많은 작업을 수행해야합니다. 먼저 뷰 속성을 인스턴스화 한 다음 여러 제약 조건을 적용합니다. 시간이 많이 걸립니다.
Android를 사용하면 간단한 .xml을 만들고 xml로 스타일과 속성을 디자인 한 다음 프로그래밍 방식으로 제약 조건을 설정하지 않고도 필요할 때마다 간단하게 확장 할 수 있습니다.
LayoutInflater inflater =
(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
//now add menuLayout to wherever you want to add like
(RelativeLayout)findViewById(R.id.relative).addView(menuLayout);