하나의 화면에서 인플레이션을 통해 뷰들을 메모리에 로딩시켜 객체화 한 후 띄워주기!!
전체적인 Activity와 xml 레이아웃 파일들의 구성
기본적인 MainActivity와 acvity_main.xml 와 별개로 새로운 Activity MenuActivity를 새로 만들면 자동으로 activity_menu.xml도 같이 생긴다.
activity_menu.xml의 구성을 다음과 같이 띄우고 부분화면으로 띄워줄 LinearLayout을 하단에 추가해서 id값을 container로 바꾸어준다.
다음은 부분화면의로 띄워줄 sub1.xml 을 새로 만들어 주었다.
sub1.xml Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="부분 화면 1"
android:textSize="30sp"/>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="동의합니다"/>
</LinearLayout>
이제 inflate메서드를 활용해서 부분화면을 메모리에 로딩 시켜 객체화 하는 과정을 거쳐야 한다.
다시 MenuActivity.java로 돌아와 소스코드를 수정해주겠다.
MenuActivity.java Code
package com.example.samplelayoutiflater;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
public class MenuActivity extends AppCompatActivity {
LinearLayout container;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
container = findViewById(R.id.container);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.sub1, container, true);
CheckBox checkBox = container.findViewById(R.id.checkbox);
checkBox.setText("로딩되었어요!");
}
});
}
}
inflater.inflate(R.layout.sub1, container, true);
inflate메서드는 첫 번째 파라미터로 XML레이아웃 리소스를, 두 번째 파라미터로 부모 컨테이너를 지정합니다.
이렇게 객체화 하는 인플레이션 과정을 통해서 container레이아웃에 부분 화면으로 띄워주기 위해 만든
sub1.xml을 띄워주는 것입니다!