AppCompat의 전체 화면 테마


304

활동에 전체 화면 테마 (제목 표시 줄 + 작업 표시 줄 없음)를 적용하는 방법을 알고 싶습니다. 지원 패키지 v7의 AppCompat 라이브러리를 사용하고 있습니다.

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"특정 활동 에 적용하려고 했지만 추락했습니다. 내 응용 프로그램 테마가 이와 같기 때문이라고 생각합니다.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

나는 또한 이것을 시도했다

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

제목 표시 줄 만 숨기고 작업 표시 줄은 숨 깁니다. 내 현재 해결 방법은 작업 표시 줄을 숨기는 것입니다.

getSupportActionBar().hide();

답변:


836

응용 프로그램에서 Theme.AppCompat를 사용하면 스타일에 아래 코드를 추가하여 FullScreenTheme을 사용할 수 있습니다.

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

매니페스트 파일에 언급하십시오.

<activity
   android:name=".activities.FullViewActivity"
   android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen" 
/>

67
부모 스타일은 "Theme.AppCompat.Light.NoActionBar"여야합니다.
Hover Ruan

3
실제로 이것을 스타일 xml 파일에 추가하면 충분합니다 : <item name = "android : windowFullscreen"> true </ item>. 작업 표시 줄 (제목 표시 줄) 가시성은 런타임시 .hide / .show 메소드를 사용하여 별도로 제어 할 수 있습니다.
Amin

2
FEATURE_NO_TITLE이 (가) 존중되지 않았습니다. 차이점은 없지만, 마침내 AppCompatActivity 대신 Activity를 확장하도록 Activity를 변경했으며 동일한 코드가 작동했습니다 (감사하게도 AppCompat가 필요하지 않습니다) : this.requestWindowFeature (Window.FEATURE_NO_TITLE); getWindow (). getDecorView (). setSystemUiVisibility (View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
user888867

이것은 상태 표시 줄을 숨 깁니다 :(
Omama

3
내가 추가 할 수 hideNavigation()있는 onResume()- 그없이 탐색 모음이 아직도 내 응용 프로그램 (API 18 세 이상)에서 볼 수 있었다
Antek

69

@nebyan의 답변을 바탕으로 작업 표시 줄이 여전히 숨어 있지 않다는 것을 알았습니다.

다음 코드는 저에게 효과적입니다.

<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

물론 AndroidManifest파일 편집을 잊어 버리지 않았습니다 .

<activity
    android:name="YOUR_ACTIVITY_NAME"
    android:theme="@style/AppFullScreenTheme" 
/>

@ 당신의 솔루션이 작동하지 않는 이유는 무엇입니까? 이유가 무엇입니까?
ahmet

1
<item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item>테마에 다음이 포함되어 있으면 설정할 필요가 없습니다..NoActionBar
user924

19
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
</style>

style.xml에서 위의 xml을 사용하면 제목과 작업 표시 줄을 숨길 수 있습니다.


12

Android 4.0 (API 레벨 14) 버전 전후에 문제가 발생합니다.

여기 에서 내 자신의 솔루션을 만들었습니다.

@SuppressLint("NewApi")
@Override
protected void onResume()
{
    super.onResume();

    if (Build.VERSION.SDK_INT < 16)
    {
        // Hide the status bar
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // Hide the action bar
        getSupportActionBar().hide();
    }
    else
    {
        // Hide the status bar
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
        / Hide the action bar
        getActionBar().hide();
    }
}

앱에서 나가서 다시 열면 작업 표시 줄이 계속 활성화되어 있기 때문에 onResume () 메서드 에이 코드를 작성합니다! (그래서 문제가 해결됩니다)

도움이 되었기를 바랍니다.)


사용자가 상태 표시 줄을 수동으로 잡아 당기면 자동으로 숨겨지지 않습니다. 설상가상으로, 소프트 키보드가 표시되면 상태 표시 줄이 자동으로 다시 나타나고 다시 숨겨지지 않습니다.
Hendra Anggrian


7
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //to remove "information bar" above the action bar
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    //to remove the action bar (title bar)
    getSupportActionBar().hide();
}

5

아래 단계를 수행 할 수 있습니다 :-

AndoridMenifest.xml

<activity
            android:name=".ui.FullImageActivity"
            android:label="@string/title_activity_main"
            android:screenOrientation="landscape"
            android:theme="@style/DialogTheme">
        </activity>

Style.xml

<style name="DialogTheme" parent="android:Theme.Dialog">

    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>

   <!-- No backgrounds, titles or window float -->
    <item name="android:windowNoTitle">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowIsFloating">false</item>
</style>

FullImageActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    setContentView(R.layout.image_view);
     }

도움이 되길 바랍니다. 감사합니다 !!


4

그것은해야 = 부모 "스타일 @ / Theme.AppCompat.Light.NoActionBar"

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" 
parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

이 솔루션 만 실제로 제목 표시 줄을 숨기고 전체 화면으로 만듭니다. 올바른 솔루션으로 표시해야합니다. 감사!
Darko Maksimovic 2018 년

3

상태 표시 줄과 작업 표시 줄을 모두 숨기고 활동을 전체 화면으로 만들려면 활동 onResume()또는 onWindowFocusChanged()방법 에서 다음 코드를 사용하십시오 .

@Override
protected void onResume() {
    super.onResume();
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN);
}

다음 링크에서 자세한 정보를 찾을 수 있습니다.

참고 : 이 스레드에서 제공하는 xml 솔루션을 사용하면 상태 표시 줄 만 숨길 수 있지만 탐색 표시 줄은 숨길 수 없습니다.


1
감사합니다. 네비게이션 바를 숨기는 유일한 방법입니다! 이 답변을 적극 권장합니다.
Maharkus


2

이 테마는 API 21 (포함) 이후에만 작동합니다. 그리고 StatusBar와 NavigationBar를 모두 투명하게 만듭니다.

<style name="TransparentAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <item name="windowActionBar">false</item>
  <item name="windowNoTitle">true</item>
  <item name="android:statusBarColor">@android:color/transparent</item>
  <item name="android:windowBackground">@android:color/transparent</item>
  <item name="android:navigationBarColor">@android:color/transparent</item>
  <item name="android:windowIsTranslucent">true</item>
  <item name="android:windowContentOverlay">@null</item>
</style>

1

AppCompat에서 제목 표시 줄을 제거하려면

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
    }

1

다음을 시도해보십시오 .

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="android:windowFullscreen">true</item>
</style>

0
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>


1
코드를 제공하면 코드를 이해하는 데 도움이되고 향후 문제에 대한 통찰력을 얻는 데 도움이 될 수 있습니다.
Lepidopteron

0

딱 이것 ?

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
    <item name="android:windowFullscreen">true</item>
</style>

0

이 스타일에 당신의 스타일에 간단히 :

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item> </style>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.