it-source

AppCompat의 전체 화면 테마

criticalcode 2023. 9. 28. 08:28
반응형

AppCompat의 전체 화면 테마

전체 화면 테마(제목 표시줄 없음 + 수행 표시줄 없음)를 활동에 적용하는 방법을 알고 싶습니다.지원 패키지 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();

테마를 사용할 때.앱에서 아래 코드를 스타일에 추가하여 전체 화면 테마를 사용할 수 있습니다.

<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" 
/>

@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" 
/>
<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을 사용하면 제목과 수행 표시줄을 숨길 수 있습니다.

안드로이드 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();
    }
}

앱을 종료한 후 다시 열면 작업 표시줄이 활성 상태로 유지되기 때문에 이 코드를 Resume() 메서드에 씁니다.

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

여러분의 "해결책"(바 유어셀프 결행을 숨김)이 일반적인 방법입니다.그러나 Google은 제목 표시줄이 숨겨져 있을 때 항상 작업 표시줄을 숨길 것을 권장합니다.여기를 보세요: https://developer.android.com/training/system-ui/status.html

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

Andorid Menifest.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>

전체 이미지 활동.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);
     }

도움이 되었으면 좋겠습니다.감사합니다!!

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();
}

상태 표시줄과 수행 표시줄을 모두 숨기고 활동을 전체 화면으로 만들려면 활동 코드에서 다음 코드를 사용합니다.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 솔루션을 사용하면 상태 표시줄만 숨길 수 있고 탐색 표시줄은 숨길 수 없습니다.

이 테마는 API 21(포함) 이후에만 작동합니다.상태 표시줄과 탐색 표시줄을 모두 투명하게 만듭니다.

<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>

parent="@style/테마여야 합니다.앱 컴뱃.라이트.노액션바"

<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>
requestWindowFeature(Window.FEATURE_NO_TITLE);

다음을 시도해 볼 수 있습니다.

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

AppCompat에서 제목 표시줄 제거하기

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
    }
<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>

이것만?

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

언급URL : https://stackoverflow.com/questions/20653305/full-screen-theme-for-appcompat

반응형