본문 바로가기
안드로이드 스튜디오 앱 개발/개념 안드로이드 스튜디오

[Android Studio] 안드로이드 스튜디오 프레임 레이아웃 (FrameLayout)에 대해 알아보자

by 망댕이 2023. 7. 24.
반응형

오늘 알아볼 레이아웃은 프레임 레이아웃 (FrameLayout)입니다.

프레임 레이아웃은 1개 이상의 뷰를 추가할 때 순서대로 쌓이면서 뷰를 보여주는 레이아웃입니다.

이러한 특징 때문에 뷰들을 전환할 때 많이 사용하게 됩니다.

 

그렇다면 프레임 레이아웃으로 간단하게 뷰 전환의 예시를 보여드리겠습니다.

 

프레임 레이아웃 안에서 텍스트 뷰 전환

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

    <Button

android:id="@+id/button_change"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="화면 바꾸기" />

    <FrameLayout

android:layout_width="match_parent"

android:layout_height="match_parent">

​

        <TextView

android:id="@+id/textView_kor"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:textSize="50sp"

android:text="가나다라마바사아자차카타파하"

android:gravity="center"

android:visibility="visible"/>

        <TextView

android:id="@+id/textView_eng"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:textSize="50sp"

android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

android:gravity="center"

android:visibility="invisible"/>

    </FrameLayout>

</LinearLayout>

 

이렇게 activity_main.xml에 프레임 레이아웃 안에 텍스트 뷰를 한글 텍스트(visible 상태) 하나 영어 텍스트(invisible 상태) 하나 만들어줍니다.

 

public class MainActivity extends AppCompatActivity {
    TextView textView_kor;
    TextView textView_eng;
    Button button_change;
    int text_num = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        textView_kor = findViewById(R.id.textView_kor);
        textView_eng = findViewById(R.id.textView_eng);
        button_change = findViewById(R.id.button_change);
        
        button_change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(text_num == 0){
                    textView_kor.setVisibility(View.INVISIBLE);
                    textView_eng.setVisibility(View.VISIBLE);
                    text_num = 1;
                }else if (text_num == 1){
                    textView_kor.setVisibility(View.VISIBLE);
                    textView_eng.setVisibility(View.INVISIBLE);
                    text_num = 0;
                }
            }
        });
    }
}

 

그 다음 MainActivity.java에서 버튼을 클릭했을 때 text_num 값이 0과 1로 계속 바뀌게 하여 text_num 값이 0일 때와 1일 때 각각 textView_kor와 textView_eng의 setVisibility 값을 알맞게 설정해 주도록 합니다.

 

 

이렇게 버튼을 누를 때마다 프레임 레이아웃 안에 들어있는 텍스트 뷰가 전환되는 것을 볼 수 있습니다.

이런 간단한 텍스트 뷰의 전환도 있지만 프레임 레이아웃을 이용하여 프래그먼트 전환도 할 수 있습니다.

 

 

container2는 프레임 레이아웃 id이며 위와 같이 프레임 레이아웃 안에 position이라는 임의의 값을 부여하여 여러 개의 프래그먼트간의 전환을 만들어낼 수 있습니다.

 

다음 포스팅 때는 TabLayout과 FrameLayout을 이용하여 프래그먼트간의 화면 전환을 만들어보도록 하겠습니다.

반응형