https://blog.csdn.net/qq_28585471/article/details/75991613

今天在练习自定义标题栏(Android初级开发(四)——补充3)的过程中遇到了隐藏系统自带标题栏的问题,现将几种去掉系统自带标题栏的方式做一总结。大体上可以分为两种方式,一种是修改xml文件(这种方式产生的效果作用于所有Activity),一种是编码实现(这种方式产生的效果只作用于当前Activity):

方法1-1:

1、查看清单文件AndroidManifest.xml中的theme

android:theme="@style/AppTheme"(系统默认的) 保持不变

2、在style.xml文件中修改AppTheme

方法1-2

在清单文件AndroidManifest.xml中修改theme,使用系统自带的无标题样式

实现无标题栏(但有系统自带的任务栏)

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

实现全屏效果:

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

!!!这时,可能会有朋友发现自己运行后出现错误,提示You need to use a Theme.AppCompat theme (or descendant) with this activity.这是因为Activity继承自了android.support.v7.app.AppCompatActivity,而不是android.app.Activity。具体的解决方法有两种:

1)如果不是强烈要求我们的Activity必须继承自AppCompatActivity,就直接让它继承Activity.如图

2)如果还是想继承自AppCompatActivity,那么根据提示来使用AppCompat的theme,即将AndroidManifest.xml文件中关于Activity的theme配置改为:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

好了,运行程序,你会发现问题已经解决啦~!!

方式1-3

在清单文件AndroidManifest.xml中修改theme,使用自定义的无标题样式

android:theme = "@style/NoTitle"

在res/values/styles.xml文件中,加入如下代码

  1. <style name="NoTitle">
  2. <item name="android:windowNoTitle">true</item>
  3. </style>

方法2

在程序中编写代码进行设置,只需在onCreate()方法中加入如下代码:

实现无标题栏(但有系统自带的任务栏)

requestWindowFeature(Window.FEATURE_NO_TITLE);

实现全屏效果

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

WindowManager.LayoutParams.FLAG_FULLSCREEN);

我在参考其他小伙伴的隐藏标题栏相关资料时,发现很多人都喜欢在文章最后附上这个Android系统自带样式罗列表,本来我是不打算仿照他们的这个做法的,但是想着还是自己敲一遍加深印象,抱着这个目的,下面请见Android系统自带样式:)

附:Android系统自带样式

android:theme = "@android:style/Theme.Dialog" 将一个Activity显示为对话框模式

android:theme = "@android:style/Theme.NoTitleBar" 不显示应用程序标题栏

android:theme = "@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标题栏,并全屏

android:theme = "Theme.Light" 背景为白色

andorid:theme = "Theme.Light.NoTitleBar" 白色背景并无标题栏

android:theme = "Theme.Black" 背景为黑色

android:theme = "Theme.Black.NoTitleBar" 黑色背景并无标题栏

android:theme = "Theme.Black.NoTitleBar.Fullscreen" 黑色背景,无标题栏,全屏

android:theme = "Theme.Wallpaper" 用系统桌面为应用程序背景

android:theme = "Theme.Wallpaper.NoTitleBar" 用系统桌面为应用程序背景,且无标题栏

android:theme = "Theme.Wallpaper.NoTitleBar.Fullscreen" 用系统桌面为应用程序背景,无标题栏,全屏

android:theme = "Translucent" 透明背景

android:theme = "Theme.Translucent.NoTitleBar" 透明背景并无标题

android:theme = "Theme.Translucent.NoTitleBar.Fullscreen" 透明背景并无标题,全屏

android:theme = "Theme.Panel" 面板风格显示

android:theme = "Theme.Light.Panel" 平板风格显示

Android开发——去掉系统自带标题栏的几种方式的更多相关文章

  1. android开发中系统自带语音模块的使用

    android开发中系统自带语音模块的使用需求:项目中需要添加语音搜索模块,增加用户体验解决过程:在网上搜到语音搜索例子,参考网上代码,加入到了自己的项目,完成产品要求.这个问题很好解决,网上能找到很 ...

  2. Android开发入门——Button绑定监听事件三种方式

    import android.app.Activity; import android.os.Bundle;import android.view.View;import android.widget ...

  3. Android manifest之系统自带的permission

    Android manifest之系统自带的permission 本文描述Android系统自带的permission.点击查看:“关于permission的原始定义和说明”.点击查看:“Androi ...

  4. 基于jeesite+android开发 电子商务系统免费教程

    下载地址: jeesite免费教程 基于jeesite+android开发 电子商务系统免费教程 基于jeesite+android开发 电子商务系统免费教程 这个教程已经录制完很久了,一直没有公开, ...

  5. 在Android开发中,定时器一般有以下3种实现方法

    在Android开发中,定时器一般有以下3种实现方法: 原文地址http://www.360doc.com/content/12/0619/13/87000_219180978.shtml 一.采用H ...

  6. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  7. Android中EditText显示明文与密文的两种方式

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录输入框显示.隐藏密码的简单布局以及实现方式. 效果图    代码分析 方式一 /**方式一:*/ private void sh ...

  8. iOS 开发之 - 关闭键盘 退出键盘 的5种方式

    iOS 开发之 - 关闭键盘 退出键盘 的5种方式   1.点击编辑区以外的地方(UIView) 2.点击编辑区域以外的地方(UIControl) 3.使用制作收起键盘的按钮 4.使用判断输入字元 5 ...

  9. Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake

    Ubuntu系统---编译opencv程序的几种方式g++.Makefile.Cmake 先建立一个工程(一个文件夹),写好xxx.cpp文件,可以是多个: //----------opencv.cp ...

随机推荐

  1. 【Redis学习之四】Redis数据类型 string

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 一.redis客户端基础命令1.帮 ...

  2. SQL提交数据三种类型

    在数据库的插入.删除和修改操作时,只有当事务在提交到数据库时才算完成. SQL语句提交数据有三种类型:显式提交.隐式提交及自动提交. [1]显式提交 显式提交.即用COMMIT命令直接完成的提交方式. ...

  3. intelj idea安装和配置

    1|0优势 intellij idea 是目前公认的java最好的开发工具之一,商业版的IntelliJ应该包含了对 HTML5.CSS3.SASS.LESS.JavaScript.CoffeeScr ...

  4. MongoDB With Spark遇到的2个错误,不能初始化和sample重复的key

    1.$sample stage could not find a non-duplicate document while using a random cursor 这个问题比较难解决,因为我用mo ...

  5. RTMP HLS HTTP 直播协议一次看个够

    直播从2016年一路火到了2017年,如今要在自己的App里加入直播功能,只要找一个现成的SDK就行了,什么拍摄.美颜.推流,一条龙服务.不过作为直播身后最重要的部分:推流协议,很多人并不是很清楚.如 ...

  6. Qt QTextEdit根据行号移动光标

    QTextEdit* p = new QTextEdit; QTextBlock block = p->document()->findBlockByNumber(nLineNum); p ...

  7. shell IFS

    在bash中IFS是内部的域分隔符,manual中对其的叙述如下:IFS The Internal Field Separator that is used for word splitting af ...

  8. selenium webdriver 实现Canvas画布自动化测试

    https://blog.csdn.net/xiaoguanyusb/article/details/80324210 由借鉴意义, 转过来 canvas 是一个画布,定位元素时只能定位到画布上,如下 ...

  9. ORA-38301: 无法对回收站中的对象执行 DDL/DML

    我们是在生产系统中遇到,清空回收站,然后禁用回收站即可,这样后面就不会发生,单纯禁用可能仍会报错,因为不会自动清空回收站. purge recyclebin; alter system set rec ...

  10. [C++ Primer Plus] 第2章、开始学习c++

    一.程序清单2.1(代码和书略不一样) #include<iostream> using namespace std;//使用std这个命名空间,才能正确找到cin和cout,如果不使用命 ...