首页 文章

AppCompat的全屏主题

提问于
浏览
267

我想知道如何将全屏主题(没有 Headers 栏没有操作栏)应用于活动 . 我正在使用支持包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);

它只隐藏 Headers 栏但不隐藏操作栏 . 我目前的解决方法是隐藏动作栏

getSupportActionBar().hide();

15 回答

  • 9

    在应用程序中使用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" 
    />
    
  • 6

    基于@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" 
    />
    
  • 1
    <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,您将能够隐藏 Headers 和操作栏 .

  • 15

    Android 4.0之前和之后版本(API级别14)出现问题 .

    从这里https://developer.android.com/training/system-ui/status.html我创建了自己的解决方案..

    @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()方法中编写此代码,因为如果您退出应用程序然后重新打开它,操作栏将保持活动状态! (这样可以解决问题)

    我希望它有用;)

  • 750

    你的"workaround"(自己隐藏actionBar)是正常的方式 . 但谷歌建议在隐藏TitleBar时始终隐藏ActionBar . 看看这里:https://developer.android.com/training/system-ui/status.html

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

    您可以按照以下步骤操作: -

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

    要删除AppCompat中的 Headers 栏:

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

    只是这个 ?

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

    此主题仅适用于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>
    
  • 61

    简单地说这个家伙你的风格:

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

    要隐藏状态栏和操作栏并使您的活动全屏显示,请在活动的 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);
    }
    

    您可以在以下链接中找到更多信息:

    Note: 在此线程中使用xml解决方案我只能隐藏状态栏而不能隐藏导航栏 .

相关问题