Android에서 상태 표시 줄을 숨기는 방법


103

링크를 참조했습니다 . 사용자가 EditText (예 : To :)를 클릭하면 키보드가 튀어 나와 동시에 스크롤하여 나머지 모든보기 (예 : 작성, 제목, 보내기 버튼)를 볼 수 있습니다. 그 화면. 마찬가지로 내 앱에는 위젯이나 뷰가 있다는 점에서 하나의 활동이 있습니다. 사용자가 내 활동에있는 Edittext를 클릭하면 키보드가 튀어 나오고 스크롤하여 나머지보기를 볼 수 있다고 가정합니다. 그러나 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"매니페스트 에이 속성 을 제공하면 나머지 뷰를 볼 수 있도록 스크롤 할 수 없지만 속성을 제공하면android:theme="@android:style/Theme.NoTitleBar"매니페스트에서 이와 같이 스크롤하여 나머지보기를 볼 수 있지만 해당 화면에는 상태 표시 줄이 있습니다. 여기서 전체 화면을 원하며 키보드가 튀어 나와도 나머지보기를보기 위해 스크롤 할 수 있습니다 ..? 이것을 위해 내가 어떤 변화를 ..?


3
@ user448250 : Android 3.0에서는 상태 표시 줄을 숨길 수 없으며 앞으로 상태 표시 줄을 숨길 수없는 적절한 기회가 있습니다. Android 3.0에서는 상태 표시 줄에 BACK 및 HOME 버튼이 있으므로 상태 표시 줄을 항상 사용할 수 있어야합니다.
CommonsWare 2011 년

3.0, API 레벨 11로 에뮬레이터에서 제목과 상태 표시 줄을 모두
숨겼습니다

전체 화면은 여전히 ​​허용되어야합니다. 사용자는 일반적으로 전체 화면 게임을 할 때 상태 표시 줄을보고 싶지 않습니다.
GMsoF

@ user448250 이걸 알아 냈나요?
Tiago 2014

활동이란 무엇입니까? 웹 사이트 폴더에 xml 파일이 있습니까?
성운 먼지

답변:


170

활동에 이것을 작성하십시오.

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

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

여기에서 문서 확인 : https://developer.android.com/training/system-ui/status.html

앱이 전체 화면으로 전환됩니다. 상태 표시 줄도없고 제목 표시 줄도 없습니다. :)


29
액티비티 슈퍼 클래스가 onCreate 메서드에서 setContentView를 호출하면 작동하지 않습니다. 앱이 예외와 함께 종료됩니다.
Ben Clayton

1
@Ron API 레벨 8에서 테스트했습니다. 다른 레벨에서는 동작이 다를 수 있습니까?
Ben Clayton

2.3.x에서 4.x까지의 모든 버전에 유효합니까?
Kostadin 2014 년

1
그래도 소프트웨어 키보드가 표시 될 때 화면이 스크롤되지 않습니다.
Tiago 2014

2
super.onCreate(savedInstanceState);충돌하는 경우 이전에 사용
David

19
 if (Build.VERSION.SDK_INT < 16) {
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 } else {
     View decorView = getWindow().getDecorView();
      int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
      decorView.setSystemUiVisibility(uiOptions);
      ActionBar actionBar = getActionBar();
      actionBar.hide();
 }

3
이 방법을 사용할 때 소프트 키보드를 표시하면 크기를 조정하는 대신 editText 위로 뷰가 이동한다는 것을 알았습니다. 이 문제를 어떻게 해결합니까?
안드로이드 개발자

19

사용 테마 "Theme.NoTitleBar.Fullscreen"와 설정 시도 "android:windowSoftInputMode=adjustResize"의 활동을 위해 AndroidManifest.xml.당신은 세부 사항을 찾을 수 있습니다 여기에 .


위의 접근 방식을 사용하면 앱이 전체 화면으로 실행될 때 상태 표시 줄을 숨길 수 있지만 페이지를 아래로 스 와이프하는 동안 상태 표시 줄을 볼 수 있습니다. 상태 표시 줄을 전혀 원하지 않는 방법이 있습니까?
Hazel Wang

13

이 코드를 사용하여 앱에서 상태 표시 줄을 숨기고 사용하기 쉽습니다.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

12

하나의 활동에서 이것이 필요한 경우 setContentView 전에 onCreate를 입력해야합니다.

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.your_screen);

1
이렇게하면 키보드가 webview의 입력 필드를 덮습니다.
Allen Vork 2018 년

@AllenVork 어떤 솔루션?
Ishaan Kumar

12

이것을 Activity 클래스에 추가하십시오.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    // some your code
}

8

당신이 사용 Activity.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

6
void hideStatusBar() {
        if (Build.VERSION.SDK_INT < 16) {
           getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

이 방법을 사용하여 상태 표시 줄을 숨길 수 있습니다. 그리고 이것은 액션 바를 숨기는 것도 중요합니다. 이 경우 Appcompat과 같은 지원 lib에서 활동을 확장 한 경우 getSupportActionBar (). hide () 를 사용할 수 있습니다. 또는 위에서 언급 한 메서드 뒤에 간단히 getActionBar (). hide () 를 호출 할 수 있습니다 . 감사


6

manifest.xml파일 에서 응용 프로그램의 테마를 변경 합니다.

android:theme="@android:style/Theme.Translucent.NoTitleBar"

이상하게도 화면 상단에 주황색 막대가 표시됩니다. 알림 표시 줄은 숨겨져 있습니다.
덴마크어 Ashfaq

6

상태 표시 줄을 숨기는 경우 onCreate (활동 용) 및 onCreateView / onViewCreated (Fragment 용)에서이를 수행하십시오.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

그리고 활동을 종료 할 때 플래그를 지우는 것을 잊지 마십시오. 그렇지 않으면이 활동을 방문한 후 전체 앱에 전체 화면이 표시됩니다. 이를 지우려면 onDestroy (for Activity) 또는 onDestroyView (for Fragment)

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

5

이 코드를 사용하십시오.

requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.youractivityxmlname);

4

이 코드는 상태 표시 줄을 숨 깁니다.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

액션 바를 숨기려면 다음 줄을 작성하십시오.

requestWindowFeature(Window.FEATURE_NO_TITLE);

두 줄을 함께 작성하여 작업 표시 줄과 상태 표시 줄을 숨길 수 있습니다. 이 모든 행은 setContentView메소드에서 onCreate메소드 호출 전에 작성되어야합니다 .


아름답게 작동합니다. 감사!
Joshua Pinter 19

3

AndroidManifest.xml-> 사용하려는 활동 내부에 다음을 추가하십시오.

android:theme="@style/Theme.AppCompat.Light.NoActionBar"
//this is for hiding action bar

MainActivity.java-> onCreate () 메서드 내부에 다음을 추가합니다.

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//this is for hiding status bar

3

styles.xml을 사용하여 숨길 수 있습니다.

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
<style name="HiddenTitleTheme" parent="AppTheme">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

당신의 매니페스트에서 이것을 이렇게 부르십시오. android:theme="@style/HiddenTitleTheme"


2

xml을 사용하여 색상을 transperant로 설정하여 상태 표시 줄을 숨길 수 있습니다 . 활동 테마에 statusBarColor 항목을 추가하십시오 .

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

PLS에만 답변이 조금 다른 사람에게 혼란을 일부 설명 코드 추가
램 Ghadiyaram

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

    setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
    , WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity__splash_screen);
}

이 코드가 문제를 해결할 수 있지만 문제를 해결하는 방법과 이유에 대한 설명포함 하여 게시물의 품질을 향상시키는 데 실제로 도움이되며 아마도 더 많은 찬성 투표를 받게됩니다. 지금 질문하는 사람뿐만 아니라 미래에 독자를 위해 질문에 답하고 있다는 것을 기억하십시오. 제발 편집 설명을 추가하고 제한 및 가정이 적용 무엇의 표시를 제공하는 답변을.
Dharman

나는 AppCompat이 정확히 무엇인지 잘 몰랐고 그냥 사용했습니다. 그리고이 세 줄이 그 일을했습니다.
user3156040

안타깝게도 항상 Google의 자체 문서가이를 달성하는 방법이 잘못되었다는 것입니다. 이 코드를 복사하여 붙여 넣어야 할 수도 있습니다.
zeeshan


0

(4.4+) kitkat 이상 장치에서 전체 화면 모드로 나타나는 상태를 막을 수 없으므로 상태 표시 줄이 확장되지 않도록 해킹을 시도하십시오.

솔루션은 꽤 크므로 여기에 SO 링크가 있습니다.

StackOverflow : 전체 화면으로 Android 4.4 이상 또는 Kitkat에서 상태 표시 줄 숨기기


난 당신이 잘못 생각, 상태 표시 줄 숨기기에 대한 공식 정보를 살펴 보시기 바랍니다 developer.android.com/training/system-ui/status.html
호세 리카르도 Citerio 알 칼라

Jose, 주어진 링크의 정보를 확인하고 필요한 경우 답변을 업데이트 할 것입니다. 이 질문 / 답변은 1 년 전에이 시나리오에 대한 공식적인 해결책이 없었을 때 추가되었습니다. 다음 릴리스에있을 수 있거나 google / android 버전에서 동일한 API / 메소드를 추가했습니다. 그들이 해결책을 제공했다면 그것은 기쁨입니다. 감사!
Jyo the Whiff

0

이 솔루션은 저에게 효과적입니다. :)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= 19) {
           getWindow().setFlags(AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT, AccessibilityNodeInfoCompat.ACTION_NEXT_HTML_ELEMENT);
           getWindow().getDecorView().setSystemUiVisibility(3328);
    }else{
           requestWindowFeature(Window.FEATURE_NO_TITLE);
           this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

    DataBindingUtil.setContentView(this, R.layout.activity_hse_video_details);

0
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // If the Android version is lower than Jellybean, use this call to hide
    // the status bar.
    if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
       View decorView = getWindow().getDecorView();
       // Hide the status bar.
       int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
       decorView.setSystemUiVisibility(uiOptions);
       // Remember that you should never show the action bar if the
       // status bar is hidden, so hide that too if necessary.
       ActionBar actionBar = getActionBar();
       actionBar.hide();
    }

    setContentView(R.layout.activity_main);

}
...
}

0

사용 Manifest

android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"

아마도 테마에 따라 다릅니다. 제 경우에는 예외가 발생했습니다. "java.lang.IllegalStateException :이 활동에 Theme.AppCompat 테마 (또는 하위 항목)를 사용해야합니다."
CoolMind

0

res-> values-> styles.xml에서

내부 스타일 본문 태그 붙여 넣기

<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>

0

Google 문서 를 참조하는 경우 Android 4.1 이상에서이 메소드를 사용할 수 있습니다. setContentView () 전에이 메소드를 호출하십시오.

public void hideStatusBar() {
    View view = getWindow().getDecorView();
    int uiOption = View.SYSTEM_UI_FLAG_FULLSCREEN;
    view.setSystemUiVisibility(uiOption);
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
}

-1
requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

여보세요! 당신이하고있는 일에 대한 의견이나 구두 설명을 추가해보십시오.
George
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.