반응형
Android Inflation
안드로이드에서는 사용자의 눈에 보이는 화면의 배치를 XML로 쉽게 만들수 있으며
XML 레이아웃 파일의 내용을 메모리상에 로드하여
화면에 보여주는 과정을 인플레이션이라고 한다.
Activity 에서 인플레이션을 사용할 때는
setContentView() 매서드를 이용하고
레이아웃을 추가로 추가할 때
LinearLayout 객체와 LayoutInflater 객체를 만들어
사용한다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// activity_main 전체 인플레이션
setContentView(R.layout.activity_main);
// 컨텐츠를 추가할 레이아웃
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
// 레이아웃 인플레이터 객체
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 인플레이터를 통해 button_layout 부분 인플레이션
inflater.inflate(R.layout.button_layout, linearLayout, true);
}
Fragment 에서 이용할 때는 onCreateView() 매서드의 매개변수인
inflater 변수를 이용하여 사용한다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup viewGroup =(ViewGroup) inflater.inflate(R.layout.fragment_blank, container, false);
return viewGroup;
}
inflater는 해당 xml을 가져와 xml내부의 컴포넌트들을
findViewById(R.id.컴포넌트_id값) 을 이용하여
해당 Activity or Fragment에 객체로 가져올 수 있다.
Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// activity_main 전체 인플레이션
setContentView(R.layout.activity_main);
TextView activityTv = findViewById(R.id.activityTv);
}
Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup viewGroup =(ViewGroup) inflater.inflate(R.layout.fragment_blank, container, false);
TextView fragmentTv = viewGroup.findViewById(R.id.fragmentTv);
return viewGroup;
}
참고 블로그
https://chebaum.tistory.com/21
'IT 기술 > Android' 카테고리의 다른 글
[Android] SDK 버전 정리. (0) | 2020.08.05 |
---|---|
[Android] Room Database 기초 (0) | 2020.08.05 |
[Android] AAC (Android Architecture Component) (0) | 2020.07.28 |
[Android] Activity Lifecycle (0) | 2020.07.27 |
댓글