去掉标题栏的方法(使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效?不仅失效,可能会挂)

时间:2023-03-08 23:53:54
去掉标题栏的方法(使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效?不仅失效,可能会挂)

使用requestWindowFeature(Window.FEATURE_NO_TITLE)隐藏标题栏失效的原因,不仅失效,可能会挂。可能是activity继承的是AppCompatActivity。下面详细介绍了使用方法:

一、如果创建的activity继承了Activity:
第一种:入门的时候经常使用的一种方法:
requestWindowFeature(Window.FEATURE_NO_TITLE);
//去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的

第二种:在AndroidManifest.xml文件中定义

<application android:theme="@android:style/Theme.NoTitleBar">
这样写的话,整个应用都会去掉标题栏,如果只想去掉某一个Activity的标题栏的话,可以把这个属性加到activity标签里面
第三种:这种在一般的应用中不常用,就是在res/values目录下面新建一个style.xml的文件
代码如下:
去掉标题栏的方法(使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效?不仅失效,可能会挂)
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="notitle">
<item name="android:windowNoTitle">
true
</item>
</style>
</resources>
去掉标题栏的方法(使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效?不仅失效,可能会挂)
这样,我们就自定义了一个style,就相当于一个主题,然后在AndroidManifest.xml文件中定义,也可达到去掉标题栏的效果
代码如下:
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/notitle">
二、创建的activity默认继承了AppCompatActivity

第一种:

getSupportActionBar().hide();
//去掉标题栏注意这句一定要写在setContentView()方法的后面

第二种:可以在AndroidManifest.xml中作如下配置,这样就没有标题栏了

<application
android:theme="@style/Theme.AppCompat.NoActionBar">

且:千万注意

1-首先是AppCompatActivity默认带标题,但Activity不带

2-而且AppCompatActivity和 requestWindowFeature(Window.FEATURE_NO_TITLE)有冲突

当活动继承AppCompatActivity时再设置取消标题则程序会直接挂掉 
即以下程序无法正常运行

1
2
3
4
5
6
7
8
9
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }
}