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」でなければなりません
ホバールアン

3
実際、これをスタイルxmlファイルに追加するだけで十分です:<item name = "android:windowFullscreen"> true </ item>。アクションバー(タイトルバー)の可視性は、実行時に.hide / .showメソッドを使用して個別に制御できます。
アミン

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

これによりステータスバーも非表示になります:(
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" 
/>

@nebyanなぜあなたの解決策はうまくいきません、そしてこれは私にとってうまくいきますか?理由は何ですか?
アフメット

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>

上記のxmlをstyle.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 2017


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

parent = "@ style / 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

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
ありがとう、ナビゲーションバーを非表示にしているのはこれだけです。この回答を強くお勧めします。
マハルカス


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
コードについても説明してください。提供すると、コードの理解に役立ち、将来の問題の洞察を得るのに役立つ場合があります。
鱗翅目

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.