programing

xml 파일에서 보기를 부풀린다는 것은 무엇을 의미합니까?

batch 2023. 8. 19. 09:59
반응형

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이 경우 다음을 수행해야 합니다.

  1. 의 .LayoutInflater
  2. 부풀릴 XML 지정
  3. 된 반된항사를 합니다.View
  4. 반환된 보기로 내용 보기 설정(위)

예를 들어:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
setContentView(theInflatedView) // 4

뷰 "확대"는 레이아웃 XML을 가져와 구문 분석하여 지정된 요소와 해당 속성에서 뷰 및 뷰 그룹 개체를 만든 다음 이러한 뷰 및 뷰 그룹의 계층을 상위 뷰 그룹에 추가하는 것을 의미합니다.setContentView()를 호출하면 XML 읽기에서 생성된 보기를 활동에 연결합니다.레이아웃 인플레이터를 사용하여 다른 뷰 그룹에 뷰를 추가할 수도 있습니다. 이는 많은 상황에서 유용한 도구가 될 수 있습니다.

부풀리기는 런타임에 활동에 보기(.xml)를 추가하는 프로세스입니다.목록 보기를 만들 때 각 항목을 동적으로 부풀립니다.단추 및 텍스트 보기와 같은 여러 보기로 보기 그룹을 만들려면 다음과 같이 만들 수 있습니다.

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);

인플레이션에 대한 일반적인 정의는 XML 코드를 Java 코드로 변환하는 것일 수 있습니다.예를 들어 XML에 태그가 있는 경우 OS는 메모리에 해당 Java 개체를 만들어야 하므로 인플래터는 XML 태그를 읽고 해당 개체를 Java로 만듭니다.

여기서 "뷰 부풀리기"란 해당 xml 파일에 지정된 뷰를 그리는 layout.xml 파일을 가져오고 생성된 뷰로 상위 viewGroup을 채우는(= 부풀리는) 것을 의미한다고 생각합니다.

UI를 XML로 만들지만 뷰 개체는 표시하기 때문에 어떻게든 xml을 뷰 개체로 변환해야 하므로 부풀리기는 xml을 뷰 개체로 변환하여 표시할 수 있도록 하는 것을 의미합니다. 이를 위해 레이아웃 인플레이터 서비스라는 서비스가 필요하고 xml을 제공하면 변환됩니다.

iOS UIKit 환경에서 이는 .Xib(안드로이드와 마찬가지로 XML) 파일에 대한 참조를 가져와 현재 ViewController의 보기 계층 구조에 추가하는 것을 의미합니다.

언급URL : https://stackoverflow.com/questions/4576330/what-does-it-mean-to-inflate-a-view-from-an-xml-file

반응형