본문 바로가기
기타/오류해결

[Android Studio] Window.FEATURE_NO_TITLE 적용 안 됨

by 하루디 2022. 7. 6.

 

 

개발 중에 팝업창을 만들어서 적용할 일이 있었다

착착 잘 만들어지는 와중에 오류가 있었는데 바로 Activity의 Title Bar가 사라지지 않고 계속 적용되고 있었던 것

 

 

 

기존코드

기존에는 dialog처럼 띄워주려고 다음과 같은 코드를 사용하고 있었다. 

Theme는 한 개만 설정할 수 있기 때문에 여기서 Dialog로 설정하고 

<activity android:name=".PopupActivity"
            android:theme="@style/Theme.AppCompat.Dialog"/>

 

PopupActivity에서 이렇게 적용을 했었는데 title이 사라지지않고 계속 보이는 오류가 발생했다. 

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_popup);

 

 

계속 유지되고있는 Title Bar

 

 

 

두 가지 해결방법을 찾았다. 

 

 

 😎 해결방법 😎

 

1. AndroidManifest.xml 

<activity android:name=".PopupActivity"
            android:theme="@style/Theme.Design.NoActionBar"/>

 

dialog로 사용하겠다고 선언하지 않고 ActionBar를 없애달라고 말하면 TitleBar 가 없어진다. 

 

해결방법 1을 통해서 사라진 Title Bar

 

 

하지만 배경으로 보이던 기존 Activity도 보이지않고 사라져서 뭔가 팝업의 느낌이 나지를 않는다 

마음에 안들어 🤔🤔 

 

 

 

2. PopupActivity.java 

개인적으로는 이 방법이 더 깔끔해서 마음에 든다

 

Manifest.xml은 그대로 Dialog 설정으로 유지하고

<activity android:name=".PopupActivity"
            android:theme="@style/Theme.AppCompat.Dialog"/>

 

자바에서 다음과 같이 수정해준다.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_popup);

 

 

뭐가 다르냐면  'FEATURE_NO_TITLE' 을 부르는 함수가 다르다

 

기존 🙄

requestWindowFeature(Window.FEATURE_NO_TITLE);

바뀐 코드 😎

supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

 

 

두 번째 방법으로 Title Bar가 제거된 모습

 

 

 

오류의 원인 🤦‍♀️🤦‍♂️

 

기존과 같이 Activity를 상속받았을 경우에는 requstWindowFeature가 동작했다

Activity를 상속받아서 적용이 됐던 기본 코드

 

하지만 AppCompatActivity를 상속받으면 기존의 함수가 동작하지 않고 신규함수를 적용해야 동작한다. 

현재는 기본으로 AppCompatActivity를 상속받는다.

 

 

 

 

참고 : https://ghj1001020.tistory.com/9

 

Android 액티비티를 팝업(Popup)으로 띄우기 , 데이터 주고받기

액티비티를 팝업(Popup)으로 띄우기 , 데이터 주고받기 MainActivity.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 public class MainActivity extends Ap..

ghj1001020.tistory.com

참고 : https://soo0100.tistory.com/1029

 

안드로이드 타이틀 바 및 상태바 없애기.

안드로이드 앱을 만들다 보면, 내 앱에선 타이틀 바 혹은 상태바가 없는 전체 화면으로 보여주고 싶을 때가 있다. 바로 이런 식으로 말이다. 그럼 먼저 타이틀 바를 먼저 없애보자. 여러 방식이

soo0100.tistory.com